OILS / core / alloc_test.py View on Github | oilshell.org

53 lines, 34 significant
1#!/usr/bin/env python2
2"""alloc_test.py: Tests for alloc.py."""
3
4import unittest
5
6from _devbuild.gen.id_kind_asdl import Id
7from _devbuild.gen.syntax_asdl import source
8from core import alloc # module under test
9
10
11class AllocTest(unittest.TestCase):
12
13 def setUp(self):
14 self.arena = alloc.Arena()
15
16 def testArena(self):
17 arena = self.arena
18 arena.PushSource(source.MainFile('one.oil'))
19
20 line = arena.AddLine('line 1', 1)
21 self.assertEqual(1, line.line_num)
22 line = arena.AddLine('line 2', 2)
23 self.assertEqual(2, line.line_num)
24
25 tok = arena.NewToken(Id.Undefined_Tok, -1, -1, -1, '')
26 self.assertEqual(0, tok.span_id)
27
28 arena.PopSource()
29
30 def testPushSource(self):
31 arena = self.arena
32
33 arena.PushSource(source.MainFile('one.oil'))
34 arena.AddLine('echo 1a', 1)
35 arena.AddLine('source two.oil', 2)
36
37 arena.PushSource(source.MainFile('two.oil'))
38 arena.AddLine('echo 2a', 1)
39 line2 = arena.AddLine('echo 2b', 2) # line 2 of two.oil
40 arena.PopSource()
41
42 line3 = arena.AddLine('echo 1c', 3) # line 3 of one.oil
43 arena.PopSource()
44
45 self.assertEqual('two.oil', line2.src.path)
46 self.assertEqual(2, line2.line_num)
47
48 self.assertEqual('one.oil', line3.src.path)
49 self.assertEqual(3, line3.line_num)
50
51
52if __name__ == '__main__':
53 unittest.main()