This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove the Rhapsody port.
[perl5.git] / t / op / not.t
1 #!./perl -w
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6     require './test.pl';
7 }
8
9 plan tests => 16;
10
11 # not() tests
12 pass("logical negation of empty list") if not();
13 is(not(), 1, "logical negation of empty list in numeric comparison");
14 is(not(), not(0),
15     "logical negation of empty list compared with logical negation of false value");
16
17 # test not(..) and !
18 note("parens needed around second argument in next two tests\nto preserve list context inside function call");
19 is(! 1, (not 1),
20     "high- and low-precedence logical negation of true value");
21 is(! 0, (not 0),
22     "high- and low-precedence logical negation of false value");
23 is(! (0, 0), not(0, 0),
24     "high- and low-precedence logical negation of lists");
25
26 # test the return of !
27 {
28     my $not0 = ! 0;
29     my $not1 = ! 1;
30
31     no warnings;
32     ok($not1 == undef,
33         "logical negation (high-precedence) of true value is numerically equal to undefined value");
34     ok($not1 == (),
35         "logical negation (high-precedence) of true value is numerically equal to empty list");
36
37     use warnings;
38     ok($not1 eq '',
39         "logical negation (high-precedence) of true value in string context is equal to empty string");
40     ok($not1 == 0,
41         "logical negation (high-precedence) of true value is false in numeric context");
42     ok($not0 == 1,
43         "logical negation (high-precedence) of false value is true in numeric context");
44 }
45
46 # test the return of not
47 {
48     my $not0 = not 0;
49     my $not1 = not 1;
50
51     no warnings;
52     ok($not1 == undef,
53         "logical negation (low-precedence) of true value is numerically equal to undefined value");
54     ok($not1 == (),
55         "logical negation (low-precedence) of true value is numerically equal to empty list");
56
57     use warnings;
58     ok($not1 eq '',
59         "logical negation (low-precedence) of true value in string context is equal to empty string");
60     ok($not1 == 0,
61         "logical negation (low-precedence) of true value is false in numeric context");
62     ok($not0 == 1,
63         "logical negation (low-precedence) of false value is true in numeric context");
64 }