| #!/usr/bin/perl -T |
| |
| use lib '.'; use lib 't'; |
| use SATest; sa_t_init("relative_scores"); |
| |
| use strict; |
| use vars qw/ $error /; |
| |
| tstlocalrules (" |
| # test that a single relative score applies to all scoresets |
| body FOO /foo/ |
| score FOO 1 2 3 4 |
| score FOO (1) |
| |
| # test that multiple relative scores apply to the scoresets |
| # appropriately, also that # and #.0 are equal |
| body BAR /bar/ |
| score BAR 1 |
| score BAR (1.0) (2) (3) (4.0) |
| |
| # verify that negative decimal versions work |
| body BAZ /bar/ |
| score BAZ 1 |
| score BAZ (-1.0) (-2.1) (-3.2) (-4.3) |
| "); |
| |
| my $sa = create_saobj(); |
| |
| $sa->init(0); # parse rules |
| |
| use Test::More tests => 4; |
| |
| ok($sa); |
| |
| # FOO should have an escalating score 2..5 |
| $error = 1; |
| foreach my $index (0..3) { |
| my $shouldbe = 2+$index; |
| if ($sa->{conf}->{scoreset}->[$index]->{'FOO'} != $shouldbe) { |
| $error = 0; |
| warn "scoreset $index should have FOO score of $shouldbe, actually ". |
| ($sa->{conf}->{scoreset}->[$index]->{'FOO'})."\n"; |
| } |
| } |
| ok($error); |
| |
| # BAR should have an escalating score 2..5 |
| $error = 1; |
| foreach my $index (0..3) { |
| my $shouldbe = 2+$index; |
| if ($sa->{conf}->{scoreset}->[$index]->{'BAR'} != $shouldbe) { |
| $error = 0; |
| warn "scoreset $index should have BAR score of $shouldbe, actually ". |
| ($sa->{conf}->{scoreset}->[$index]->{'BAR'})."\n"; |
| } |
| } |
| ok($error); |
| |
| # BAZ should have an descenting score 0, -1.1, -2.2, -3.3 |
| $error = 1; |
| foreach my $index (0..3) { |
| my $shouldbe = 1 - ($index+1 + $index/10); |
| if ($sa->{conf}->{scoreset}->[$index]->{'BAZ'} != $shouldbe) { |
| $error = 0; |
| warn "scoreset $index should have BAZ score of $shouldbe, actually ". |
| ($sa->{conf}->{scoreset}->[$index]->{'BAZ'})."\n"; |
| } |
| } |
| ok($error); |
| |