3 namespace Tests\Behat\Gherkin\Filter;
5 use Behat\Gherkin\Filter\LineRangeFilter;
6 use Behat\Gherkin\Node\ExampleTableNode;
7 use Behat\Gherkin\Node\FeatureNode;
8 use Behat\Gherkin\Node\OutlineNode;
9 use Behat\Gherkin\Node\ScenarioNode;
11 class LineRangeFilterTest extends FilterTest
13 public function featureLineRangeProvider()
16 array('1', '1', true),
17 array('1', '2', true),
18 array('1', '*', true),
19 array('2', '2', false),
20 array('2', '*', false)
25 * @dataProvider featureLineRangeProvider
27 public function testIsFeatureMatchFilter($filterMinLine, $filterMaxLine, $expected)
29 $feature = new FeatureNode(null, null, array(), null, array(), null, null, null, 1);
31 $filter = new LineRangeFilter($filterMinLine, $filterMaxLine);
32 $this->assertSame($expected, $filter->isFeatureMatch($feature));
35 public function scenarioLineRangeProvider()
51 * @dataProvider scenarioLineRangeProvider
53 public function testIsScenarioMatchFilter($filterMinLine, $filterMaxLine, $expectedNumberOfMatches)
55 $scenario = new ScenarioNode(null, array(), array(), null, 2);
56 $outline = new OutlineNode(null, array(), array(), new ExampleTableNode(array(), null), null, 3);
58 $filter = new LineRangeFilter($filterMinLine, $filterMaxLine);
60 $expectedNumberOfMatches,
61 intval($filter->isScenarioMatch($scenario)) + intval($filter->isScenarioMatch($outline))
65 public function testFilterFeatureScenario()
67 $filter = new LineRangeFilter(1, 3);
68 $feature = $filter->filterFeature($this->getParsedFeature());
69 $this->assertCount(1, $scenarios = $feature->getScenarios());
70 $this->assertSame('Scenario#1', $scenarios[0]->getTitle());
72 $filter = new LineRangeFilter(5, 9);
73 $feature = $filter->filterFeature($this->getParsedFeature());
74 $this->assertCount(1, $scenarios = $feature->getScenarios());
75 $this->assertSame('Scenario#2', $scenarios[0]->getTitle());
77 $filter = new LineRangeFilter(5, 6);
78 $feature = $filter->filterFeature($this->getParsedFeature());
79 $this->assertCount(0, $scenarios = $feature->getScenarios());
82 public function testFilterFeatureOutline()
84 $filter = new LineRangeFilter(12, 14);
85 $feature = $filter->filterFeature($this->getParsedFeature());
86 $this->assertCount(1, $scenarios = $feature->getScenarios());
87 $this->assertSame('Scenario#3', $scenarios[0]->getTitle());
88 $this->assertCount(1, $scenarios[0]->getExampleTable()->getRows());
90 $filter = new LineRangeFilter(15, 20);
91 $feature = $filter->filterFeature($this->getParsedFeature());
92 $this->assertCount(1, $scenarios = $feature->getScenarios());
93 $this->assertSame('Scenario#3', $scenarios[0]->getTitle());
94 $this->assertCount(3, $scenarios[0]->getExampleTable()->getRows());
95 $this->assertSame(array(
96 array('action', 'outcome'),
97 array('act#1', 'out#1'),
98 array('act#2', 'out#2'),
99 ), $scenarios[0]->getExampleTable()->getRows());