File: number_comparison.t

package info (click to toggle)
libsyntax-keyword-assert-perl 0.16-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 196 kB
  • sloc: perl: 98; pascal: 69; makefile: 3
file content (94 lines) | stat: -rw-r--r-- 2,924 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
use Test2::V0;
use Syntax::Keyword::Assert;

use lib 't/lib';
use TestUtil;

subtest 'NUM_EQ' => sub {
    my $x = 1;
    my $y = 2;
    ok lives { assert($x + $y == 3) };

    is dies { assert($x + $y == 100) }, expected_assert_bin(3, '==', 100);
    is dies { assert($x == 100) },      expected_assert_bin(1, '==', 100);

    is dies { assert(!!$x == 100) }, expected_assert_bin('true',  '==', 100);
    is dies { assert(!$x == 100) },  expected_assert_bin('false', '==', 100);

    my $message = 'hello';
    my $undef   = undef;

    my $warnings = warnings {
        is dies { assert($message == 100) }, expected_assert_bin('"hello"', '==', 100);
        is dies { assert($undef == 100) },   expected_assert_bin('undef',   '==', 100);
    };

    # suppressed warnings
    is scalar @$warnings, 2;
};

subtest 'NUM_NE' => sub {
    my $x = 2;
    ok lives { assert($x != 1) };
    is dies { assert($x != 2) }, expected_assert_bin(2, '!=', 2);
};

subtest 'NUM_LT' => sub {
    my $x = 2;
    is dies { assert($x < 1) }, expected_assert_bin(2, '<', 1);
    is dies { assert($x < 2) }, expected_assert_bin(2, '<', 2);
    ok lives { assert($x < 3) };

    my $x2 = 2.01;
    is dies { assert($x2 < 2) },    expected_assert_bin(2.01, '<', 2);
    is dies { assert($x2 < 2.01) }, expected_assert_bin(2.01, '<', 2.01);
    ok lives { assert($x2 < 3) };

    my $x3 = -1;
    ok lives { assert($x3 < 0) };
    is dies { assert($x3 < -1) }, expected_assert_bin(-1, '<', -1);
    is dies { assert($x3 < -2) }, expected_assert_bin(-1, '<', -2);

    my $x4 = -1.01;
    ok lives { assert($x4 < 0) };
    is dies { assert($x4 < -1.01) }, expected_assert_bin(-1.01, '<', -1.01);
    is dies { assert($x4 < -2) },    expected_assert_bin(-1.01, '<', -2);
};

subtest 'NUM_GT' => sub {
    my $x = 2;
    ok lives { assert($x > 1) };
    is dies { assert($x > 2) }, expected_assert_bin(2, '>', 2);
    is dies { assert($x > 3) }, expected_assert_bin(2, '>', 3);

    my $x2 = 2.01;
    ok lives { assert($x2 > 2) };
    is dies { assert($x2 > 2.01) }, expected_assert_bin(2.01, '>', 2.01);
    is dies { assert($x2 > 3) },    expected_assert_bin(2.01, '>', 3);

    my $x3 = -1;
    is dies { assert($x3 > 0) },  expected_assert_bin(-1, '>',  0);
    is dies { assert($x3 > -1) }, expected_assert_bin(-1, '>', -1);
    ok lives { assert($x3 > -2) };

    my $x4 = -1.01;
    is dies { assert($x4 > 0) },     expected_assert_bin(-1.01, '>',  0);
    is dies { assert($x4 > -1.01) }, expected_assert_bin(-1.01, '>', -1.01);
    ok lives { assert($x4 > -2) };
};

subtest 'NUM_LE' => sub {
    my $x = 2;
    is dies { assert($x <= 1) }, expected_assert_bin(2, '<=', 1);
    ok lives { assert($x <= 2) };
    ok lives { assert($x <= 3) };
};

subtest 'NUM_GE' => sub {
    my $x = 2;
    ok lives { assert($x >= 1) };
    ok lives { assert($x >= 2) };
    is dies { assert($x >= 3) }, expected_assert_bin(2, '>=', 3);
};

done_testing;