also remove .s files when running make clean in test directory
[voodoo-lang.git] / test / test
blobd2d769aa7b645603fff76de3a5d2660444fb89a3
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('import-after-use', '../bin/voodooc import-after-use.voo', '',
31 :expected_status => 1, :expected_errors => `cat import-after-use.err`)
33 add_test('no-input-files',
34 '../bin/voodooc',
35 '',
36 :expected_status => 128,
37 :expected_errors => `cat no-input-files.err`)
39 add_test 'version', '../bin/voodooc --version',
40 "Voodoo Compiler version #{`cat ../VERSION`}"
42 add_test2 'hello', "Hello, world!\n"
44 add_test2 'tail-calls', ''
46 add_test1 'auto-bytes'
48 add_test1 'auto-words'
50 add_test1 'bytes'
52 add_test1 'call'
54 add_test1 'at'
56 add_test1 'block'
58 add_test1 'else-if'
60 add_test1 'if'
62 add_test 'func', 'LD_LIBRARY_PATH=$PWD ./func', "3 + 4 = 7\n"
64 add_test1 'goto'
66 add_test2 'fact', "479001600\n"
68 add_test1 'bitwise'
70 add_test1 'plusminus'
72 add_test1 'labels'
74 add_test1 'many-args'
76 add_test1 'many-args-tail'
78 add_test1 'many-locals'
80 add_test1 'mul'
82 add_test1 'div'
84 add_test1 'mod'
86 add_test1 'raw'
88 add_test1 'restore-frame'
90 add_test1 'restore-locals'
92 add_test1 'rotate'
94 add_test1 'save-frame-and-locals'
96 add_test1 'set-at'
98 add_test1 'set-byte'
100 add_test1 'set-word'
102 add_test1 'shift'
104 add_test 'var', 'LD_LIBRARY_PATH=$PWD ./var', "18 + 42 = 60\n18 + 9 = 27\n"
106 add_test1 'vtable'
108 add_test1 'gcd'
110 printf 'test_output_name...'
111 if system("$RUBY test_output_name.rb")
112 $passed.increment
113 else
114 $failed.increment
117 add_test 'errors',
118 "#{$VOODOOC} -o errors.o errors.voo",
120 :expected_status => 1,
121 :expected_errors => `cat errors.err`
123 add_test 'substitute-number',
124 './substitute-number',
125 "bytes-per-word: " +
126 "#{Voodoo::CodeGenerator::get_generator.features[:'bytes-per-word']}\n"
128 run_tests $tests, 4
130 exit report_test_results