annotate test/testsamples.py @ 364:c49459768aaa

Work on globals
author Windel Bouwman
date Wed, 19 Mar 2014 20:24:03 +0100
parents 396e5cefba13
children 39bf68bf1891
rev   line source
355
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
1 import unittest
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
2 from testemulation import runQemu
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
3 from ppci.recipe import RecipeLoader
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
4 from ppci.tasks import TaskRunner
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
5
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
6
358
5ef1cb1bb54f Fix nosetests
Windel Bouwman
parents: 355
diff changeset
7 class Samples:
355
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
8 def testPrint(self):
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
9 snippet = """
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
10 module testsample;
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
11 import io;
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
12 function void start()
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
13 {
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
14 io.print("Hello world");
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
15 }
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
16 """
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
17 self.do(snippet, "Hello world")
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
18
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
19 def testForLoopPrint(self):
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
20 snippet = """
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
21 module testsample;
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
22 import io;
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
23 function void start()
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
24 {
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
25 var int i;
362
c05ab629976a Added CPUID for arm
Windel Bouwman
parents: 358
diff changeset
26 for (i=0; i<10; i++)
355
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
27 {
362
c05ab629976a Added CPUID for arm
Windel Bouwman
parents: 358
diff changeset
28 io.print2("A = ", i);
355
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
29 }
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
30 }
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
31 """
362
c05ab629976a Added CPUID for arm
Windel Bouwman
parents: 358
diff changeset
32 res = "".join("A = 0x{0:08X}\n".format(a) for a in range(10))
c05ab629976a Added CPUID for arm
Windel Bouwman
parents: 358
diff changeset
33 self.do(snippet, res)
355
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
34
364
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
35 def testForLoopPrint(self):
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
36 snippet = """
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
37 module testglobal;
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
38 import io;
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
39 var int G;
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
40 function void do1()
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
41 {
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
42 G = G + 1;
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
43 io.print2("G=", G);
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
44 }
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
45 function void do5()
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
46 {
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
47 G = G + 5;
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
48 io.print2("G=", G);
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
49 }
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
50 function void start()
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
51 {
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
52 G = 0;
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
53 do1();
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
54 do1();
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
55 do2();
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
56 do1();
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
57 do2();
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
58 }
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
59 """
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
60 res = "".join("G=0x{0:08X}\n".format(a) for a in [1,2,7,8,13])
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
61 self.do(snippet, res)
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
62
355
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
63
358
5ef1cb1bb54f Fix nosetests
Windel Bouwman
parents: 355
diff changeset
64 class TestSamplesOnVexpress(unittest.TestCase, Samples):
355
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
65 def do(self, src, expected_output):
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
66 runner = TaskRunner()
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
67 recipe_loader = RecipeLoader(runner)
363
396e5cefba13 Removed debuginfo instruction
Windel Bouwman
parents: 362
diff changeset
68 # print(expected_output)
355
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
69 return
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
70 # TODO: improve recipe loading??
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
71 recipe_loader.load_dict({
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
72 'link': {
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
73 'inputs': [
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
74 ],
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
75 'layout': {
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
76 'code': 0x60010000,
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
77 'data': 0x60020000
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
78 },
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
79 'output': 'tst.bin'
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
80 }
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
81 })
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
82 runner.add_task(Compile())
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
83 runner.run_tasks()
364
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
84 res = runQemu('tst.bin', machine='vexpress-a9')
355
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
85 self.assertEqual(expected_output, res)
c2ddc8a36f5e Enabled optimization
Windel Bouwman
parents:
diff changeset
86
364
c49459768aaa Work on globals
Windel Bouwman
parents: 363
diff changeset
87
362
c05ab629976a Added CPUID for arm
Windel Bouwman
parents: 358
diff changeset
88 if __name__ == '__main__':
c05ab629976a Added CPUID for arm
Windel Bouwman
parents: 358
diff changeset
89 unittest.main()