3 namespace Tests\Behat\Gherkin\Filter;
5 use Behat\Gherkin\Filter\LineFilter;
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 LineFilterTest extends FilterTest
13 public function testIsFeatureMatchFilter()
15 $feature = new FeatureNode(null, null, array(), null, array(), null, null, null, 1);
17 $filter = new LineFilter(1);
18 $this->assertTrue($filter->isFeatureMatch($feature));
20 $filter = new LineFilter(2);
21 $this->assertFalse($filter->isFeatureMatch($feature));
23 $filter = new LineFilter(3);
24 $this->assertFalse($filter->isFeatureMatch($feature));
27 public function testIsScenarioMatchFilter()
29 $scenario = new ScenarioNode(null, array(), array(), null, 2);
31 $filter = new LineFilter(2);
32 $this->assertTrue($filter->isScenarioMatch($scenario));
34 $filter = new LineFilter(1);
35 $this->assertFalse($filter->isScenarioMatch($scenario));
37 $filter = new LineFilter(5);
38 $this->assertFalse($filter->isScenarioMatch($scenario));
40 $outline = new OutlineNode(null, array(), array(), new ExampleTableNode(array(), null), null, 20);
42 $filter = new LineFilter(5);
43 $this->assertFalse($filter->isScenarioMatch($outline));
45 $filter = new LineFilter(20);
46 $this->assertTrue($filter->isScenarioMatch($outline));
49 public function testFilterFeatureScenario()
51 $filter = new LineFilter(2);
52 $feature = $filter->filterFeature($this->getParsedFeature());
53 $this->assertCount(1, $scenarios = $feature->getScenarios());
54 $this->assertSame('Scenario#1', $scenarios[0]->getTitle());
56 $filter = new LineFilter(7);
57 $feature = $filter->filterFeature($this->getParsedFeature());
58 $this->assertCount(1, $scenarios = $feature->getScenarios());
59 $this->assertSame('Scenario#2', $scenarios[0]->getTitle());
61 $filter = new LineFilter(5);
62 $feature = $filter->filterFeature($this->getParsedFeature());
63 $this->assertCount(0, $scenarios = $feature->getScenarios());
66 public function testFilterFeatureOutline()
68 $filter = new LineFilter(13);
69 $feature = $filter->filterFeature($this->getParsedFeature());
70 $this->assertCount(1, $scenarios = $feature->getScenarios());
71 $this->assertSame('Scenario#3', $scenarios[0]->getTitle());
72 $this->assertCount(4, $scenarios[0]->getExampleTable()->getRows());
74 $filter = new LineFilter(19);
75 $feature = $filter->filterFeature($this->getParsedFeature());
76 $this->assertCount(1, $scenarios = $feature->getScenarios());
77 $this->assertSame('Scenario#3', $scenarios[0]->getTitle());
78 $this->assertCount(2, $scenarios[0]->getExampleTable()->getRows());
79 $this->assertSame(array(
80 array('action', 'outcome'),
81 array('act#1', 'out#1'),
82 ), $scenarios[0]->getExampleTable()->getRows());
84 $filter = new LineFilter(21);
85 $feature = $filter->filterFeature($this->getParsedFeature());
86 $this->assertCount(1, $scenarios = $feature->getScenarios());
87 $this->assertSame('Scenario#3', $scenarios[0]->getTitle());
88 $this->assertCount(2, $scenarios[0]->getExampleTable()->getRows());
89 $this->assertSame(array(
90 array('action', 'outcome'),
91 array('act#3', 'out#3'),
92 ), $scenarios[0]->getExampleTable()->getRows());
94 $filter = new LineFilter(18);
95 $feature = $filter->filterFeature($this->getParsedFeature());
96 $this->assertCount(1, $scenarios = $feature->getScenarios());
97 $this->assertSame('Scenario#3', $scenarios[0]->getTitle());
98 $this->assertCount(1, $scenarios[0]->getExampleTable()->getRows());
99 $this->assertSame(array(
100 array('action', 'outcome'),
101 ), $scenarios[0]->getExampleTable()->getRows());