Initial release.
[robmyers:dogecode.git] / dogecode / translation_tests.py
1 import translation
2
3 import unittest
4
5 # Hello World, from Wikipedia
6 HELLO_WORLD = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++."
7
8
9 class TestTranslation(unittest.TestCase):
10         
11     def test_to_and_from_tokens(self):
12         tokens = translation.source_to_tokens(HELLO_WORLD, True)
13         source = translation.token_runs_to_code(tokens)
14         self.assertEqual(source, HELLO_WORLD)
15
16     def test_token_list_equality(self):
17         t1 = translation.TokenList()
18         t1.append("INCB", 8)
19         t1.append("JFOR", 1)
20         t1.append("INCP", 1)
21         t1.append("INCB", 4)
22         t1.append("JFOR", 1)
23         t2 = translation.TokenList()
24         t2.append("INCB", 8)
25         t2.append("JFOR", 1)
26         t2.append("INCP", 1)
27         t2.append("INCB", 4)
28         t2.append("JFOR", 1)
29         # Identity
30         self.assertTrue(t1.equals(t1))
31         self.assertTrue(t2.equals(t2))
32         # Reflexivity
33         self.assertTrue(t1.equals(t2))
34         self.assertTrue(t2.equals(t1))
35
36     def test_token_list_subsequence(self):
37         t1 = translation.TokenList()
38         t1.append("INCB", 8)
39         t1.append("JFOR", 1)
40         t1.append("INCP", 1)
41         t1.append("INCB", 4)
42         t1.append("JFOR", 1)
43         t2 = translation.TokenList()
44         t2.append("INCB", 8)
45         t2.append("JFOR", 1)
46         t2.append("INCP", 1)
47         self.assertTrue(t2.is_subsequence_of(t1))
48         self.assertFalse(t1.is_subsequence_of(t2))
49         self.assertFalse(t1.is_subsequence_of(t1))
50         
51 if __name__ == '__main__':
52     unittest.main()