OILS / core / alloc_test.py View on Github | oils.pub

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