summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/harness/wptrunner/wptmanifest/tests/test_static.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/harness/wptrunner/wptmanifest/tests/test_static.py')
-rw-r--r--testing/web-platform/harness/wptrunner/wptmanifest/tests/test_static.py105
1 files changed, 105 insertions, 0 deletions
diff --git a/testing/web-platform/harness/wptrunner/wptmanifest/tests/test_static.py b/testing/web-platform/harness/wptrunner/wptmanifest/tests/test_static.py
new file mode 100644
index 000000000..5bd270d9f
--- /dev/null
+++ b/testing/web-platform/harness/wptrunner/wptmanifest/tests/test_static.py
@@ -0,0 +1,105 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import unittest
+
+from cStringIO import StringIO
+
+from ..backends import static
+
+# There aren't many tests here because it turns out to be way more convenient to
+# use test_serializer for the majority of cases
+
+
+class TestStatic(unittest.TestCase):
+ def parse(self, input_str):
+ return self.parser.parse(StringIO(input_str))
+
+ def compile(self, input_text, input_data):
+ return static.compile(input_text, input_data)
+
+ def test_get_0(self):
+ data = """
+key: value
+
+[Heading 1]
+ other_key:
+ if a == 1: value_1
+ if a == 2: value_2
+ value_3
+"""
+
+ manifest = self.compile(data, {"a": 2})
+
+ self.assertEquals(manifest.get("key"), "value")
+ children = list(item for item in manifest.iterchildren())
+ self.assertEquals(len(children), 1)
+ section = children[0]
+ self.assertEquals(section.name, "Heading 1")
+
+ self.assertEquals(section.get("other_key"), "value_2")
+ self.assertEquals(section.get("key"), "value")
+
+ def test_get_1(self):
+ data = """
+key: value
+
+[Heading 1]
+ other_key:
+ if a == 1: value_1
+ if a == 2: value_2
+ value_3
+"""
+ manifest = self.compile(data, {"a": 3})
+
+ children = list(item for item in manifest.iterchildren())
+ section = children[0]
+ self.assertEquals(section.get("other_key"), "value_3")
+
+ def test_get_3(self):
+ data = """key:
+ if a == "1": value_1
+ if a[0] == "ab"[0]: value_2
+"""
+ manifest = self.compile(data, {"a": "1"})
+ self.assertEquals(manifest.get("key"), "value_1")
+
+ manifest = self.compile(data, {"a": "ac"})
+ self.assertEquals(manifest.get("key"), "value_2")
+
+ def test_get_4(self):
+ data = """key:
+ if not a: value_1
+ value_2
+"""
+ manifest = self.compile(data, {"a": True})
+ self.assertEquals(manifest.get("key"), "value_2")
+
+ manifest = self.compile(data, {"a": False})
+ self.assertEquals(manifest.get("key"), "value_1")
+
+ def test_api(self):
+ data = """key:
+ if a == 1.5: value_1
+ value_2
+key_1: other_value
+"""
+ manifest = self.compile(data, {"a": 1.5})
+
+ self.assertFalse(manifest.is_empty)
+ self.assertEquals(manifest.root, manifest)
+ self.assertTrue(manifest.has_key("key_1"))
+ self.assertFalse(manifest.has_key("key_2"))
+
+ self.assertEquals(set(manifest.iterkeys()), set(["key", "key_1"]))
+ self.assertEquals(set(manifest.itervalues()), set(["value_1", "other_value"]))
+
+ def test_is_empty_1(self):
+ data = """
+[Section]
+ [Subsection]
+"""
+ manifest = self.compile(data, {})
+
+ self.assertTrue(manifest.is_empty)