on i386 and AMD64, generate position-independent code even for labels in the same...
[voodoo-lang.git] / test / test
blob8ad6bf2a0130ab082fc9e193b043c54e417e3447
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 'check', '../bin/voodooc --check many-args-tail.voo', "OK\n"
21 add_test 'check-c', '../bin/voodooc -c many-args.voo', "OK\n"
23 add_test('check-errors', '../bin/voodooc -c errors.voo', '',
24 :expected_status => 1, :expected_errors => `cat errors.err`)
26 add_test 'features', '../bin/voodooc -a i386 --features', `cat features.out`
28 add_test 'help', '../bin/voodooc --help', `cat help.out`
30 add_test('export-after-use', '../bin/voodooc export-after-use.voo', '',
31 :expected_status => 1, :expected_errors => `cat export-after-use.err`)
33 add_test('import-after-use', '../bin/voodooc import-after-use.voo', '',
34 :expected_status => 1, :expected_errors => `cat import-after-use.err`)
36 add_test('no-input-files',
37 '../bin/voodooc',
38 '',
39 :expected_status => 128,
40 :expected_errors => `cat no-input-files.err`)
42 add_test 'version', '../bin/voodooc --version',
43 "Voodoo Compiler version #{`cat ../VERSION`}"
45 add_test2 'hello', "Hello, world!\n"
47 add_test2 'tail-calls', ''
49 add_test1 'add'
51 add_test1 'auto-bytes'
53 add_test1 'auto-words'
55 add_test1 'bytes'
57 add_test1 'call'
59 add_test1 'at'
61 add_test1 'block'
63 add_test1 'else-if'
65 add_test1 'if'
67 add_test 'func', 'LD_LIBRARY_PATH=$PWD ./func', "3 + 4 = 7\n"
69 add_test1 'goto'
71 add_test2 'fact', "479001600\n"
73 add_test1 'bitwise'
75 add_test1 'plusminus'
77 add_test1 'labels'
79 add_test1 'many-args'
81 add_test1 'many-args-tail'
83 add_test1 'many-locals'
85 add_test1 'mul'
87 add_test1 'div'
89 add_test1 'mod'
91 add_test1 'raw'
93 add_test1 'restore-frame'
95 add_test1 'restore-locals'
97 add_test1 'rotate'
99 add_test1 'save-frame-and-locals'
101 add_test1 'set-at'
103 add_test1 'set-byte'
105 add_test1 'set-word'
107 add_test1 'shift'
109 add_test1 'sub'
111 add_test 'var', 'LD_LIBRARY_PATH=$PWD ./var', "42\n12\n67\n-19\n159\n"
113 add_test1 'vtable'
115 add_test1 'gcd'
117 printf 'test_output_name...'
118 if system("$RUBY test_output_name.rb")
119 $passed.increment
120 else
121 $failed.increment
124 add_test 'errors',
125 "#{$VOODOOC} -o errors.o errors.voo",
127 :expected_status => 1,
128 :expected_errors => `cat errors.err`
130 add_test 'substitute-number',
131 './substitute-number',
132 "bytes-per-word: " +
133 "#{Voodoo::CodeGenerator::get_generator.features[:'bytes-per-word']}\n"
135 run_tests $tests, 4
137 exit report_test_results