Fix tests
[app-scheme79asm.git] / t / App-Scheme79asm.t
CommitLineData
509643aa
MG
1#!/usr/bin/perl
2use strict;
3use warnings;
4
f71b3492 5use Test::More tests => 3;
509643aa
MG
6BEGIN { use_ok('App::Scheme79asm') };
7
8sub run_test {
9 my ($args, $input, $expected, $name) = @_;
10 my $actual = '';
11 open my $fh, '>', \$actual;
12 my $asm = App::Scheme79asm->new(%$args);
3aa76f51 13 $asm->parse_and_print_verilog($input, $fh);
509643aa
MG
14 close $fh;
15 is $actual, $expected, $name
16}
17
4e527493 18run_test {addr_bits => 5}, '(quoted (symbol 5))', <<'EOF', '(QUOTE 5)';
f71b3492
MG
19mem[0] <= 0; // (cdr part of NIL)
20mem[1] <= 0; // (car part of NIL)
21mem[2] <= 8'b00100000; // (cdr part of T)
22mem[3] <= 8'b00100000; // (car part of T)
23mem[4] <= 8'd8; // (free storage pointer)
24mem[5] <= 8'b11100111; // QUOTED 7
25mem[6] <= 0; // (result of computation)
26mem[7] <= 8'b00100101; // SYMBOL 5
4e527493 27EOF
f71b3492 28
3aa76f51 29run_test {addr_bits => 13}, '(call (more (funcall 0) (proc (var -2))) (number 5))', <<'EOF', '((LAMBDA ID (X) X) 5)';
f71b3492
MG
30mem[ 0] <= 0; // (cdr part of NIL)
31mem[ 1] <= 0; // (car part of NIL)
32mem[ 2] <= 16'b0010000000000000; // (cdr part of T)
33mem[ 3] <= 16'b0010000000000000; // (car part of T)
34mem[ 4] <= 16'd12; // (free storage pointer)
35mem[ 5] <= 16'b1100000000000111; // CALL 7
36mem[ 6] <= 0; // (result of computation)
37mem[ 7] <= 16'b0000000000001001; // MORE 9
38mem[ 8] <= 16'b0010000000000101; // NUMBER 5
3aa76f51 39mem[ 9] <= 16'b1110000000000000; // FUNCALL 0
f71b3492 40mem[10] <= 16'b1000000000001011; // PROC 11
3aa76f51 41mem[11] <= 16'b0101111111111110; // VAR -2
4e527493 42EOF
This page took 0.013445 seconds and 4 git commands to generate.