-
Notifications
You must be signed in to change notification settings - Fork 2
/
12-logical.t
40 lines (30 loc) · 1.03 KB
/
12-logical.t
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
#! nqp
# check '||', '&&', and '//'
plan(8);
my $or_no_branch := 1;
$or_no_branch || ( $or_no_branch := 0 );
ok($or_no_branch, "logical || shortcuts, branch not taken");
my $or_branch := 0;
0 || ( $or_branch := 1 );
ok($or_branch, "logical || shortcuts, branch taken");
my $or_test := 0;
if 0 || $or_test == 0 {
ok(!$or_test, "logical || result is correct");
} else {
nok('took the wrong branch');
}
my $and_no_branch := 0;
$and_no_branch && ( $and_no_branch := 1 );
ok(!$and_no_branch, "logical && shortcuts, branch not taken");
my $and_branch := 0;
1 && ( $and_branch := 1 );
ok($and_branch, "logical && shortcuts, branch taken");
my $err_no_branch := 1;
$err_no_branch // ( $err_no_branch := -1 );
ok($err_no_branch == 1, "logical // shortcuts on true, branch not taken");
$err_no_branch := 0;
$err_no_branch // ( $err_no_branch := -1 );
ok($err_no_branch == 0, "logical // shortcuts on defined false, branch not taken");
my $err_branch;
$err_branch // ( $err_branch := 1 );
ok($err_branch == 1, "logical // takes branch on undef");