support labels that start in underscores
[voodoo-lang.git] / test / test
blobf26307cb019de968e180e71f1161576bdc04bc74
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('no-input-files',
31 '../bin/voodooc',
32 '',
33 :expected_status => 128,
34 :expected_errors => `cat no-input-files.err`)
36 add_test 'version', '../bin/voodooc --version',
37 "Voodoo Compiler version #{`cat ../VERSION`}"
39 add_test2 'hello', "Hello, world!\n"
41 add_test2 'tail-calls', ''
43 add_test1 'auto-bytes'
45 add_test1 'auto-words'
47 add_test1 'bytes'
49 add_test1 'call'
51 add_test1 'at'
53 add_test1 'block'
55 add_test1 'else-if'
57 add_test1 'if'
59 add_test 'func', 'LD_LIBRARY_PATH=$PWD ./func', "3 + 4 = 7\n"
61 add_test1 'goto'
63 add_test2 'fact', "479001600\n"
65 add_test1 'bitwise'
67 add_test1 'plusminus'
69 add_test1 'labels'
71 add_test1 'many-args'
73 add_test1 'many-args-tail'
75 add_test1 'many-locals'
77 add_test1 'mul'
79 add_test1 'div'
81 add_test1 'mod'
83 add_test1 'raw'
85 add_test1 'restore-frame'
87 add_test1 'restore-locals'
89 add_test1 'rotate'
91 add_test1 'save-frame-and-locals'
93 add_test1 'set-at'
95 add_test1 'set-byte'
97 add_test1 'set-word'
99 add_test1 'shift'
101 add_test 'var', 'LD_LIBRARY_PATH=$PWD ./var', "18 + 42 = 60\n18 + 9 = 27\n"
103 add_test1 'vtable'
105 add_test1 'gcd'
107 printf 'test_output_name...'
108 if system("$RUBY test_output_name.rb")
109 $passed.increment
110 else
111 $failed.increment
114 add_test 'errors',
115 "#{$VOODOOC} -o errors.o errors.voo",
117 :expected_status => 1,
118 :expected_errors => `cat errors.err`
120 add_test 'substitute-number',
121 './substitute-number',
122 "bytes-per-word: " +
123 "#{Voodoo::CodeGenerator::get_generator.features[:'bytes-per-word']}\n"
125 run_tests $tests, 4
127 exit report_test_results