DSP: Small perl script for creating tests
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3301 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
4c19fa7e5f
commit
39b16ffafa
|
@ -0,0 +1,15 @@
|
||||||
|
<test name="@CMD@ test" type="srfull"
|
||||||
|
description="This test checks the effect of various SR flags over @CMD@">
|
||||||
|
<header>
|
||||||
|
incdir "tests"
|
||||||
|
include "dsp_base.inc"
|
||||||
|
</header>
|
||||||
|
<body>
|
||||||
|
lri $IX0, #0x0000
|
||||||
|
lri $SR @SR@
|
||||||
|
|
||||||
|
@CMD@
|
||||||
|
lri $IX0, #0x1337
|
||||||
|
call send_back
|
||||||
|
</body>
|
||||||
|
</test>
|
|
@ -0,0 +1,69 @@
|
||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use XML::Simple;
|
||||||
|
use Getopt::Long;
|
||||||
|
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
sub usage() {
|
||||||
|
die("createtest -i <test template>\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";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue