Security update for permissions_by_term
[yaffs-website] / vendor / behat / gherkin / tests / Behat / Gherkin / Filter / LineRangeFilterTest.php
1 <?php
2
3 namespace Tests\Behat\Gherkin\Filter;
4
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;
10
11 class LineRangeFilterTest extends FilterTest
12 {
13     public function featureLineRangeProvider()
14     {
15         return array(
16             array('1', '1', true),
17             array('1', '2', true),
18             array('1', '*', true),
19             array('2', '2', false),
20             array('2', '*', false)
21         );
22     }
23
24     /**
25      * @dataProvider featureLineRangeProvider
26      */
27     public function testIsFeatureMatchFilter($filterMinLine, $filterMaxLine, $expected)
28     {
29         $feature = new FeatureNode(null, null, array(), null, array(), null, null, null, 1);
30
31         $filter = new LineRangeFilter($filterMinLine, $filterMaxLine);
32         $this->assertSame($expected, $filter->isFeatureMatch($feature));
33     }
34
35     public function scenarioLineRangeProvider()
36     {
37         return array(
38             array('1', '2', 1),
39             array('1', '*', 2),
40             array('2', '2', 1),
41             array('2', '*', 2),
42             array('3', '3', 1),
43             array('3', '*', 1),
44             array('1', '1', 0),
45             array('4', '4', 0),
46             array('4', '*', 0)
47         );
48     }
49
50     /**
51      * @dataProvider scenarioLineRangeProvider
52      */
53     public function testIsScenarioMatchFilter($filterMinLine, $filterMaxLine, $expectedNumberOfMatches)
54     {
55         $scenario = new ScenarioNode(null, array(), array(), null, 2);
56         $outline = new OutlineNode(null, array(), array(), new ExampleTableNode(array(), null), null, 3);
57
58         $filter = new LineRangeFilter($filterMinLine, $filterMaxLine);
59         $this->assertEquals(
60             $expectedNumberOfMatches,
61             intval($filter->isScenarioMatch($scenario)) + intval($filter->isScenarioMatch($outline))
62         );
63     }
64
65     public function testFilterFeatureScenario()
66     {
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());
71
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());
76
77         $filter = new LineRangeFilter(5, 6);
78         $feature = $filter->filterFeature($this->getParsedFeature());
79         $this->assertCount(0, $scenarios = $feature->getScenarios());
80     }
81
82     public function testFilterFeatureOutline()
83     {
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());
89
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());
100     }
101 }