diff --git a/Source/DSPSpy/templates/if_test.tpl b/Source/DSPSpy/templates/if_test.tpl new file mode 100644 index 0000000000..80c96641ca --- /dev/null +++ b/Source/DSPSpy/templates/if_test.tpl @@ -0,0 +1,15 @@ + +
+incdir "tests" +include "dsp_base.inc" +
+ +lri $IX0, #0x0000 +lri $SR @SR@ + +@CMD@ +lri $IX0, #0x1337 +call send_back + +
\ No newline at end of file diff --git a/Source/DSPSpy/util/createtest.pl b/Source/DSPSpy/util/createtest.pl new file mode 100755 index 0000000000..db50c9e2cb --- /dev/null +++ b/Source/DSPSpy/util/createtest.pl @@ -0,0 +1,69 @@ +#!/usr/bin/perl -w + +use strict; +use XML::Simple; +use Getopt::Long; + +use Data::Dumper; + +sub usage() { + die("createtest -i \n"); +} + +sub parseString { + my $string = shift; + my $cmd = shift; + $string =~ s/\@CMD\@/$cmd/gi; + return $string; +} + +sub generateSRFull { + my $res = shift; + my $body = shift; + + $res .= join "\n", map {my $b = sprintf "\#0x%04X", $_; (my $a = $body) =~ s/\@SR\@/$b/g; $a} 1..65535; + + return $res; +} + +sub generateTest { + my $type = shift; + my $header = shift; + my $body = shift; + + if ($type eq "srfull") { + return generateSRFull($header, $body); + } +} + +my ($cmds,$input,$output); +if (!GetOptions('cmds|c=s' => \$cmds, + 'input|i=s' => \$input, +# 'output|o=s' => \$output, + )) { + usage(); + exit 1; +} + +usage() if (! defined $input); + +my $xtest = XMLin($input); +my $type = $xtest->{'type'}; + +foreach my $cmd (split(/,/, $cmds)) { + my $name = parseString($xtest->{'name'}, $cmd); + $name =~ s/ /_/g; + my $desc = parseString($xtest->{'description'}, $cmd); + my $header = parseString($xtest->{'header'}, $cmd); + my $body = parseString($xtest->{'body'}, $cmd); + + open(OUTPUT, ">$name.ds") || + die("Can't open file $name for writing: $!\n"); + + print OUTPUT "; $name\n"; + print OUTPUT "; $desc\n"; + my $test = generateTest($type, $header, $body); + print OUTPUT $test . "\n"; + +} +