示例#1
0
 def test_path_singlematch(self):
     template = "@{$.items[0].greeting} @{$.items[0].name} and @{$.items[1].greeting} @{$.items[1].name}"
     data = {
         "items": [{
             "greeting": "Hello",
             "name": "world"
         }, {
             "greeting": "hello",
             "name": "Donald Truck"
         }]
     }
     expected = "Hello world and hello Donald Truck"
     self.assertEqual(Template(template).resolve(data), expected)
示例#2
0
 def test_path_muiltimatch(self):
     template = "@*{$.items[0].*} and @*{$.items[1].*}"
     data = {
         "items": [{
             "greeting": "Hello",
             "name": "world"
         }, {
             "greeting": "hello",
             "name": "Donald Truck"
         }]
     }
     expected = "['Hello', 'world'] and ['hello', 'Donald Truck']"
     self.assertEqual(Template(template).resolve(data), expected)
示例#3
0
 def test_map_resolution_non_string_value(self):
     template = "${item1} ${item2}"
     data = {
         "item1": {
             "greeting": "Hello",
             "name": "world"
         },
         "item2": {
             "greeting": "Hello",
             "name": "Donald Truck"
         }
     }
     expected = "{'greeting': 'Hello', 'name': 'world'} {'greeting': 'Hello', 'name': 'Donald Truck'}"
     self.assertEqual(Template(template).resolve(data), expected)
示例#4
0
 def test_set_matchers_conflicting(self):
     foomatcher = Matcher("foomatcher",
                          tag=r"\$x",
                          samples=["$x{whatever}"])
     barmatcher = Matcher("barmatcher",
                          tag=r"\$xx*",
                          samples=["$xxx{whatever}"])
     template = Template("", matchers=None)
     template.add_matcher(foomatcher)
     with self.assertRaises(Exception) as exception_context:
         template.add_matcher(barmatcher)
示例#5
0
    def test_add_matchers(self):
        def resolve_foo(expression, match, context):
            return "foo-{0}".format(expression)

        template = "Hello $foo{something} and $bar{something_else}"
        expected = "Hello foo-something and something_else-bar"
        self.assertEqual(
            Template(template).add_matcher(
                Matcher(
                    "foomatcher",
                    tag=r"\$foo",
                    samples=["$foo{}"],
                    processor=resolve_foo)).add_matcher(
                        Matcher("barmatcher",
                                tag=r"\$bar",
                                samples=["$bar{}"],
                                processor=lambda expression, match, context:
                                "{0}-bar".format(expression))).resolve(),
            expected)
示例#6
0
 def test_eval_with_data(self):
     template = "Hello !{context['values'][2] + context['values'][3]}"
     data = {"values": [1, 3, 5, 7]}
     expected = "Hello 12"
     self.assertEqual(Template(template).resolve(data), expected)
示例#7
0
 def test_eval(self):
     template = "Hello !{7 + 5}"
     expected = "Hello 12"
     self.assertEqual(Template(template).resolve(), expected)
示例#8
0
 def test_static_text(self):
     template = "Hello world"
     expected = "Hello world"
     self.assertEqual(Template(template).resolve(), expected)
示例#9
0
 def test_escaped_backslash(self):
     template = r"\\Hello \\${name} \\"
     data = {"name": "world"}
     expected = r'\Hello \world ' + '\\'
     self.assertEqual(Template(template).resolve(data), expected)
示例#10
0
 def test_map_escaped_expression(self):
     template = r"Hello \${name}"
     data = {"name": "world"}
     expected = 'Hello ${name}'
     self.assertEqual(Template(template).resolve(data), expected)
示例#11
0
 def test_map_resolution_simple(self):
     template = "${greeting} ${name}"
     data = {"greeting": "Hello", "name": "world"}
     expected = "Hello world"
     self.assertEqual(Template(template).resolve(data), expected)