OLD | NEW |
(Empty) | |
| 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}}', 'Loa
der'), |
| 54 TestUtilityLoader.expected[1].replace('{{loader}}', 'Loa
der')) |
| 55 |
| 56 required_tempita = (TestUtilityLoader.required[0].replace('{{loader}}', 'Loa
der'), |
| 57 TestUtilityLoader.required[1].replace('{{loader}}', 'Loa
der')) |
| 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 |
OLD | NEW |