implemented save-locals and restore-locals on i386
[voodoo-lang.git] / test / test
blob7d805d8a9089cf54be8ff4ea925d0cc4833753cd
1 #! /usr/bin/env ruby
3 dirname = File.dirname(__FILE__)
4 require "#{dirname}/test"
5 require "#{dirname}/test_language_version"
6 require "#{dirname}/test_parser"
7 require "#{dirname}/test_validator"
8 require 'thread'
10 test_language_version
12 test_validator
14 test_parser
16 add_test 'architectures', '../bin/voodooc --architecture help',
17 `cat architectures.out`
19 add_test 'features', '../bin/voodooc -a i386 --features', `cat features.out`
21 add_test 'help', '../bin/voodooc --help', `cat help.out`
23 add_test('no-input-files',
24 '../bin/voodooc',
25 '',
26 :expected_status => 128,
27 :expected_errors => `cat no-input-files.err`)
29 add_test 'version', '../bin/voodooc --version',
30 "Voodoo Compiler version #{`cat ../VERSION`}"
32 add_test2 'hello', "Hello, world!\n"
34 add_test2 'tail-calls', ''
36 add_test1 'auto-bytes'
38 add_test1 'auto-words'
40 add_test1 'bytes'
42 add_test1 'call'
44 add_test1 'at'
46 add_test1 'block'
48 add_test1 'else-if'
50 add_test1 'if'
52 add_test1 'goto'
54 add_test2 'fact', "479001600\n"
56 add_test1 'bitwise'
58 add_test1 'plusminus'
60 add_test1 'many-args'
62 add_test1 'many-args-tail'
64 add_test1 'many-locals'
66 add_test1 'mul'
68 add_test1 'div'
70 add_test1 'mod'
72 add_test1 'raw'
74 add_test1 'restore-frame'
76 add_test1 'restore-locals'
78 add_test1 'rotate'
80 add_test1 'set-at'
82 add_test1 'set-byte'
84 add_test1 'set-word'
86 add_test1 'shift'
88 add_test1 'vtable'
90 add_test1 'gcd'
92 printf 'test_output_name...'
93 if system("$RUBY test_output_name.rb")
94 $passed.increment
95 else
96 $failed.increment
97 end
99 add_test 'errors',
100 "#{$VOODOOC} -o errors.o errors.voo",
102 :expected_status => 1,
103 :expected_errors => `cat errors.err`
105 add_test 'substitute-number',
106 './substitute-number',
107 "bytes-per-word: " +
108 "#{Voodoo::CodeGenerator::get_generator.features[:'bytes-per-word']}\n"
110 run_tests $tests, 4
112 exit report_test_results