3 namespace Tests\Behat\Gherkin\Filter;
5 use Behat\Gherkin\Filter\TagFilter;
6 use Behat\Gherkin\Node\FeatureNode;
7 use Behat\Gherkin\Node\ScenarioNode;
9 class TagFilterTest extends \PHPUnit_Framework_TestCase
11 public function testFilterFeature()
13 $feature = new FeatureNode(null, null, array('wip'), null, array(), null, null, null, 1);
14 $filter = new TagFilter('@wip');
15 $this->assertEquals($feature, $filter->filterFeature($feature));
18 new ScenarioNode(null, array(), array(), null, 2),
19 $matchedScenario = new ScenarioNode(null, array('wip'), array(), null, 4)
21 $feature = new FeatureNode(null, null, array(), null, $scenarios, null, null, null, 1);
22 $filteredFeature = $filter->filterFeature($feature);
24 $this->assertSame(array($matchedScenario), $filteredFeature->getScenarios());
26 $filter = new TagFilter('~@wip');
28 $matchedScenario = new ScenarioNode(null, array(), array(), null, 2),
29 new ScenarioNode(null, array('wip'), array(), null, 4)
31 $feature = new FeatureNode(null, null, array(), null, $scenarios, null, null, null, 1);
32 $filteredFeature = $filter->filterFeature($feature);
34 $this->assertSame(array($matchedScenario), $filteredFeature->getScenarios());
37 public function testIsFeatureMatchFilter()
39 $feature = new FeatureNode(null, null, array(), null, array(), null, null, null, 1);
41 $filter = new TagFilter('@wip');
42 $this->assertFalse($filter->isFeatureMatch($feature));
44 $feature = new FeatureNode(null, null, array('wip'), null, array(), null, null, null, 1);
45 $this->assertTrue($filter->isFeatureMatch($feature));
47 $filter = new TagFilter('~@done');
48 $this->assertTrue($filter->isFeatureMatch($feature));
50 $feature = new FeatureNode(null, null, array('wip', 'done'), null, array(), null, null, null, 1);
51 $this->assertFalse($filter->isFeatureMatch($feature));
53 $feature = new FeatureNode(null, null, array('tag1', 'tag2', 'tag3'), null, array(), null, null, null, 1);
54 $filter = new TagFilter('@tag5,@tag4,@tag6');
55 $this->assertFalse($filter->isFeatureMatch($feature));
57 $feature = new FeatureNode(null, null, array(
62 ), null, array(), null, null, null, 1);
63 $this->assertTrue($filter->isFeatureMatch($feature));
65 $filter = new TagFilter('@wip&&@vip');
66 $feature = new FeatureNode(null, null, array('wip', 'done'), null, array(), null, null, null, 1);
67 $this->assertFalse($filter->isFeatureMatch($feature));
69 $feature = new FeatureNode(null, null, array('wip', 'done', 'vip'), null, array(), null, null, null, 1);
70 $this->assertTrue($filter->isFeatureMatch($feature));
72 $filter = new TagFilter('@wip,@vip&&@user');
73 $feature = new FeatureNode(null, null, array('wip'), null, array(), null, null, null, 1);
74 $this->assertFalse($filter->isFeatureMatch($feature));
76 $feature = new FeatureNode(null, null, array('vip'), null, array(), null, null, null, 1);
77 $this->assertFalse($filter->isFeatureMatch($feature));
79 $feature = new FeatureNode(null, null, array('wip', 'user'), null, array(), null, null, null, 1);
80 $this->assertTrue($filter->isFeatureMatch($feature));
82 $feature = new FeatureNode(null, null, array('vip', 'user'), null, array(), null, null, null, 1);
83 $this->assertTrue($filter->isFeatureMatch($feature));
86 public function testIsScenarioMatchFilter()
88 $feature = new FeatureNode(null, null, array('feature-tag'), null, array(), null, null, null, 1);
89 $scenario = new ScenarioNode(null, array(), array(), null, 2);
91 $filter = new TagFilter('@wip');
92 $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
94 $filter = new TagFilter('~@done');
95 $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
97 $scenario = new ScenarioNode(null, array(
101 ), array(), null, 2);
102 $filter = new TagFilter('@tag5,@tag4,@tag6');
103 $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
105 $scenario = new ScenarioNode(null, array(
110 ), array(), null, 2);
111 $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
113 $filter = new TagFilter('@wip&&@vip');
114 $scenario = new ScenarioNode(null, array('wip', 'not-done'), array(), null, 2);
115 $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
117 $scenario = new ScenarioNode(null, array(
121 ), array(), null, 2);
122 $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
124 $filter = new TagFilter('@wip,@vip&&@user');
125 $scenario = new ScenarioNode(null, array(
127 ), array(), null, 2);
128 $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
130 $scenario = new ScenarioNode(null, array('vip'), array(), null, 2);
131 $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
133 $scenario = new ScenarioNode(null, array('wip', 'user'), array(), null, 2);
134 $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
136 $filter = new TagFilter('@feature-tag&&@user');
137 $scenario = new ScenarioNode(null, array('wip', 'user'), array(), null, 2);
138 $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
140 $filter = new TagFilter('@feature-tag&&@user');
141 $scenario = new ScenarioNode(null, array('wip'), array(), null, 2);
142 $this->assertFalse($filter->isScenarioMatch($feature, $scenario));