Security update for permissions_by_term
[yaffs-website] / vendor / behat / gherkin / tests / Behat / Gherkin / Filter / TagFilterTest.php
diff --git a/vendor/behat/gherkin/tests/Behat/Gherkin/Filter/TagFilterTest.php b/vendor/behat/gherkin/tests/Behat/Gherkin/Filter/TagFilterTest.php
new file mode 100644 (file)
index 0000000..5c6c9ab
--- /dev/null
@@ -0,0 +1,144 @@
+<?php
+
+namespace Tests\Behat\Gherkin\Filter;
+
+use Behat\Gherkin\Filter\TagFilter;
+use Behat\Gherkin\Node\FeatureNode;
+use Behat\Gherkin\Node\ScenarioNode;
+
+class TagFilterTest extends \PHPUnit_Framework_TestCase
+{
+    public function testFilterFeature()
+    {
+        $feature = new FeatureNode(null, null, array('wip'), null, array(), null, null, null, 1);
+        $filter = new TagFilter('@wip');
+        $this->assertEquals($feature, $filter->filterFeature($feature));
+
+        $scenarios = array(
+            new ScenarioNode(null, array(), array(), null, 2),
+            $matchedScenario = new ScenarioNode(null, array('wip'), array(), null, 4)
+        );
+        $feature = new FeatureNode(null, null, array(), null, $scenarios, null, null, null, 1);
+        $filteredFeature = $filter->filterFeature($feature);
+
+        $this->assertSame(array($matchedScenario), $filteredFeature->getScenarios());
+
+        $filter = new TagFilter('~@wip');
+        $scenarios = array(
+            $matchedScenario = new ScenarioNode(null, array(), array(), null, 2),
+            new ScenarioNode(null, array('wip'), array(), null, 4)
+        );
+        $feature = new FeatureNode(null, null, array(), null, $scenarios, null, null, null, 1);
+        $filteredFeature = $filter->filterFeature($feature);
+
+        $this->assertSame(array($matchedScenario), $filteredFeature->getScenarios());
+    }
+
+    public function testIsFeatureMatchFilter()
+    {
+        $feature = new FeatureNode(null, null, array(), null, array(), null, null, null, 1);
+
+        $filter = new TagFilter('@wip');
+        $this->assertFalse($filter->isFeatureMatch($feature));
+
+        $feature = new FeatureNode(null, null, array('wip'), null, array(), null, null, null, 1);
+        $this->assertTrue($filter->isFeatureMatch($feature));
+
+        $filter = new TagFilter('~@done');
+        $this->assertTrue($filter->isFeatureMatch($feature));
+
+        $feature = new FeatureNode(null, null, array('wip', 'done'), null, array(), null, null, null, 1);
+        $this->assertFalse($filter->isFeatureMatch($feature));
+
+        $feature = new FeatureNode(null, null, array('tag1', 'tag2', 'tag3'), null, array(), null, null, null, 1);
+        $filter = new TagFilter('@tag5,@tag4,@tag6');
+        $this->assertFalse($filter->isFeatureMatch($feature));
+
+        $feature = new FeatureNode(null, null, array(
+            'tag1',
+            'tag2',
+            'tag3',
+            'tag5'
+        ), null, array(), null, null, null, 1);
+        $this->assertTrue($filter->isFeatureMatch($feature));
+
+        $filter = new TagFilter('@wip&&@vip');
+        $feature = new FeatureNode(null, null, array('wip', 'done'), null, array(), null, null, null, 1);
+        $this->assertFalse($filter->isFeatureMatch($feature));
+
+        $feature = new FeatureNode(null, null, array('wip', 'done', 'vip'), null, array(), null, null, null, 1);
+        $this->assertTrue($filter->isFeatureMatch($feature));
+
+        $filter = new TagFilter('@wip,@vip&&@user');
+        $feature = new FeatureNode(null, null, array('wip'), null, array(), null, null, null, 1);
+        $this->assertFalse($filter->isFeatureMatch($feature));
+
+        $feature = new FeatureNode(null, null, array('vip'), null, array(), null, null, null, 1);
+        $this->assertFalse($filter->isFeatureMatch($feature));
+
+        $feature = new FeatureNode(null, null, array('wip', 'user'), null, array(), null, null, null, 1);
+        $this->assertTrue($filter->isFeatureMatch($feature));
+
+        $feature = new FeatureNode(null, null, array('vip', 'user'), null, array(), null, null, null, 1);
+        $this->assertTrue($filter->isFeatureMatch($feature));
+    }
+
+    public function testIsScenarioMatchFilter()
+    {
+        $feature = new FeatureNode(null, null, array('feature-tag'), null, array(), null, null, null, 1);
+        $scenario = new ScenarioNode(null, array(), array(), null, 2);
+
+        $filter = new TagFilter('@wip');
+        $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
+
+        $filter = new TagFilter('~@done');
+        $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
+
+        $scenario = new ScenarioNode(null, array(
+            'tag1',
+            'tag2',
+            'tag3'
+        ), array(), null, 2);
+        $filter = new TagFilter('@tag5,@tag4,@tag6');
+        $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
+
+        $scenario = new ScenarioNode(null, array(
+            'tag1',
+            'tag2',
+            'tag3',
+            'tag5'
+        ), array(), null, 2);
+        $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
+
+        $filter = new TagFilter('@wip&&@vip');
+        $scenario = new ScenarioNode(null, array('wip', 'not-done'), array(), null, 2);
+        $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
+
+        $scenario = new ScenarioNode(null, array(
+            'wip',
+            'not-done',
+            'vip'
+        ), array(), null, 2);
+        $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
+
+        $filter = new TagFilter('@wip,@vip&&@user');
+        $scenario = new ScenarioNode(null, array(
+            'wip'
+        ), array(), null, 2);
+        $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
+
+        $scenario = new ScenarioNode(null, array('vip'), array(), null, 2);
+        $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
+
+        $scenario = new ScenarioNode(null, array('wip', 'user'), array(), null, 2);
+        $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
+
+        $filter = new TagFilter('@feature-tag&&@user');
+        $scenario = new ScenarioNode(null, array('wip', 'user'), array(), null, 2);
+        $this->assertTrue($filter->isScenarioMatch($feature, $scenario));
+
+        $filter = new TagFilter('@feature-tag&&@user');
+        $scenario = new ScenarioNode(null, array('wip'), array(), null, 2);
+        $this->assertFalse($filter->isScenarioMatch($feature, $scenario));
+    }
+}