make/tests/scripts/functions/intcmp
Jouke Witteveen bfbf169b63 [SV 65448] intcmp: Compare values instead of magnitudes
* src/function.c (func_intcmp): Reverse comparison direction when
both arguments are negative.
* tests/scripts/functions/intcmp: Add tests and remove useless ones.
2024-03-24 14:08:59 -04:00

95 lines
2.3 KiB
Perl

# -*-perl-*-
$description = "Test the intcmp function.\n";
$details = "Try various uses of intcmp and ensure they all give the correct
results.\n";
run_make_test('# Negative
n = -10
# Zero
z = 0
# Positive
p = 888
q = 889
huge = 8857889956778499040639527525992734031025567913257255490371761260681427
.RECIPEPREFIX = >
all:
> @echo 0_1 $(intcmp $n,$n)
> @echo 0_2 $(intcmp $z,$z)
> @echo 0_3 $(intcmp -$z,$z)
> @echo 0_4 $(intcmp $p,$p)
> @echo 0_5 $(intcmp $n,$z)
> @echo 0_6 $(intcmp $z,$n)
> @echo 1_1 $(intcmp $n,$n,$(shell echo lt))
> @echo 1_2 $(intcmp $n,$z,$(shell echo lt))
> @echo 1_3 $(intcmp $z,$n,$(shell echo lt))
> @echo 2_1 $(intcmp $n,$p,lt,ge)
> @echo 2_2 $(intcmp $z,$z,lt,ge)
> @echo 2_3 $(intcmp $p,$n,lt,ge)
> @echo 3_0 $(intcmp $p,$n,lt,eq,)
> @echo 3_1 $(intcmp $z,$p,lt,eq,gt)
> @echo 3_2 $(intcmp $p,$z,lt,eq,gt)
> @echo 3_3 $(intcmp $p,$p,lt,eq,gt)
> @echo 3_4 $(intcmp $p,$q,lt,eq,gt)
> @echo 3_5 $(intcmp $q,$p,lt,eq,gt)
> @echo 3_6 $(intcmp -$p,-$q,lt,eq,gt)
> @echo 3_7 $(intcmp -$q,-$p,lt,eq,gt)
> @echo 4_1 $(intcmp -$(huge),$(huge),lt,eq,gt)
> @echo 4_2 $(intcmp $(huge),-$(huge),lt,eq,gt)
> @echo 4_3 $(intcmp -$(huge),-$(huge),lt,eq,gt)
> @echo 4_4 $(intcmp +$(huge),$(huge),lt,eq,gt)
', '', '0_1 -10
0_2 0
0_3 0
0_4 888
0_5
0_6
1_1
1_2 lt
1_3
2_1 lt
2_2 ge
2_3 ge
3_0
3_1 lt
3_2 gt
3_3 eq
3_4 lt
3_5 gt
3_6 gt
3_7 lt
4_1 lt
4_2 gt
4_3 eq
4_4 eq
');
# Test error conditions
run_make_test('
intcmp-e1: ; @echo $(intcmp 12a,1,foo)
intcmp-e2: ; @echo $(intcmp 0,,foo)
intcmp-e3: ; @echo $(intcmp -1,)
intcmp-e4: ; @echo $(intcmp ,55)',
'intcmp-e1',
"#MAKEFILE#:2: *** non-numeric first argument to 'intcmp' function: '12a'. Stop.",
512);
run_make_test(undef,
'intcmp-e2',
"#MAKEFILE#:3: *** non-numeric second argument to 'intcmp' function: empty value. Stop.",
512);
run_make_test(undef,
'intcmp-e3',
"#MAKEFILE#:4: *** non-numeric second argument to 'intcmp' function: empty value. Stop.",
512);
run_make_test(undef,
'intcmp-e4',
"#MAKEFILE#:5: *** non-numeric first argument to 'intcmp' function: empty value. Stop.",
512);
# This tells the test driver that the perl test script executed properly.
1;