Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / cython / src / Cython / Compiler / Tests / TestUtilityLoad.py
1 import unittest
2
3 from Cython.Compiler import Code, UtilityCode
4
5
6 def strip_2tup(tup):
7     return tup[0] and tup[0].strip(), tup[1] and tup[1].strip()
8
9 class TestUtilityLoader(unittest.TestCase):
10     """
11     Test loading UtilityCodes
12     """
13
14     expected = "test {{loader}} prototype", "test {{loader}} impl"
15
16     required = "req {{loader}} proto", "req {{loader}} impl"
17
18     context = dict(loader='Loader')
19
20     name = "TestUtilityLoader"
21     filename = "TestUtilityLoader.c"
22     cls = Code.UtilityCode
23
24     def test_load_as_string(self):
25         got = strip_2tup(self.cls.load_as_string(self.name))
26         self.assertEquals(got, self.expected)
27
28         got = strip_2tup(self.cls.load_as_string(self.name, self.filename))
29         self.assertEquals(got, self.expected)
30
31     def test_load(self):
32         utility = self.cls.load(self.name)
33         got = strip_2tup((utility.proto, utility.impl))
34         self.assertEquals(got, self.expected)
35
36         required, = utility.requires
37         got = strip_2tup((required.proto, required.impl))
38         self.assertEquals(got, self.required)
39
40         utility = self.cls.load(self.name, from_file=self.filename)
41         got = strip_2tup((utility.proto, utility.impl))
42         self.assertEquals(got, self.expected)
43
44         utility = self.cls.load_cached(self.name, from_file=self.filename)
45         got = strip_2tup((utility.proto, utility.impl))
46         self.assertEquals(got, self.expected)
47
48
49 class TestTempitaUtilityLoader(TestUtilityLoader):
50     """
51     Test loading UtilityCodes with Tempita substitution
52     """
53     expected_tempita = (TestUtilityLoader.expected[0].replace('{{loader}}', 'Loader'),
54                         TestUtilityLoader.expected[1].replace('{{loader}}', 'Loader'))
55
56     required_tempita = (TestUtilityLoader.required[0].replace('{{loader}}', 'Loader'),
57                         TestUtilityLoader.required[1].replace('{{loader}}', 'Loader'))
58
59     cls = Code.TempitaUtilityCode
60
61     def test_load_as_string(self):
62         got = strip_2tup(self.cls.load_as_string(self.name, context=self.context))
63         self.assertEquals(got, self.expected_tempita)
64
65     def test_load(self):
66         utility = self.cls.load(self.name, context=self.context)
67         got = strip_2tup((utility.proto, utility.impl))
68         self.assertEquals(got, self.expected_tempita)
69
70         required, = utility.requires
71         got = strip_2tup((required.proto, required.impl))
72         self.assertEquals(got, self.required_tempita)
73
74         utility = self.cls.load(self.name, from_file=self.filename, context=self.context)
75         got = strip_2tup((utility.proto, utility.impl))
76         self.assertEquals(got, self.expected_tempita)
77
78
79 class TestCythonUtilityLoader(TestTempitaUtilityLoader):
80     """
81     Test loading CythonUtilityCodes
82     """
83
84     # Just change the attributes and run the same tests
85     expected = None, "test {{cy_loader}} impl"
86     expected_tempita = None, "test CyLoader impl"
87
88     required = None, "req {{cy_loader}} impl"
89     required_tempita = None, "req CyLoader impl"
90
91     context = dict(cy_loader='CyLoader')
92
93     name = "TestCyUtilityLoader"
94     filename = "TestCyUtilityLoader.pyx"
95     cls = UtilityCode.CythonUtilityCode
96
97     # Small hack to pass our tests above
98     cls.proto = None
99
100     test_load = TestUtilityLoader.test_load
101     test_load_tempita = TestTempitaUtilityLoader.test_load