Skip to content

Commit b337aa4

Browse files
committed
Add tests for .VAR.dynamic introspection
1 parent 29ae9f5 commit b337aa4

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

S02-names/is_dynamic.t

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
use v6;
2+
use Test;
3+
4+
plan 22;
5+
6+
#?pugs skip "is dynamic NYI"
7+
#?niecza skip "is dynamic NYI"
8+
#?rakudo.jvm skip "oh no, .VAR does not work on JVM"
9+
# not specifically typed
10+
{
11+
my $a is dynamic;
12+
ok $a.VAR.dynamic, 'dynamic set correctly for uninitialized $a';
13+
$a = 42;
14+
ok $a.VAR.dynamic, 'dynamic set correctly for initialized $a';
15+
$a = Nil;
16+
ok $a.VAR.dynamic, 'dynamic set correctly for reset $a';
17+
} #3
18+
19+
#?pugs skip "Int is dynamic NYI"
20+
#?niecza skip "Int is dynamic NYI"
21+
#?rakudo.jvm skip "oh no, .VAR does not work on JVM"
22+
# typed
23+
{
24+
my Int $a is dynamic;
25+
ok $a.VAR.dynamic, 'dynamic set correctly for uninitialized Int $a';
26+
$a = 42;
27+
ok $a.VAR.dynamic, 'dynamic set correctly for initialized Int $a';
28+
$a = Nil;
29+
ok $a.VAR.dynamic, 'dynamic set correctly for reset Int $a';
30+
} #3
31+
32+
#?pugs skip "is dynamic NYI"
33+
#?niecza skip "is dynamic NYI"
34+
#?rakudo.jvm skip "oh no, .VAR does not work on JVM"
35+
# not specifically typed
36+
{
37+
my @a is dynamic;
38+
ok @a.VAR.dynamic, 'dynamic set correctly for @a';
39+
ok @a[0].VAR.dynamic, 'dynamic set correctly for non-existing @a[0]';
40+
@a[0] = 42;
41+
ok @a[0].VAR.dynamic, 'dynamic set correctly for existing @a[0]';
42+
@a[0] = Nil;
43+
ok @a[0].VAR.dynamic, 'dynamic set correctly for reset @a[0]';
44+
} #4
45+
46+
#?pugs skip "Int is dynamic NYI"
47+
#?niecza skip "Int is dynamic NYI"
48+
#?rakudo.jvm skip "oh no, .VAR does not work on JVM"
49+
# typed
50+
{
51+
my Int @a is dynamic(42);
52+
ok @a.VAR.dynamic, 'dynamic set correctly for Int @a';
53+
ok @a[0].VAR.dynamic, 'dynamic set correctly for non-existing Int @a[0]';
54+
@a[0] = 42;
55+
ok @a[0].VAR.dynamic, 'dynamic set correctly for existing Int @a[0]';
56+
@a[0] = Nil;
57+
ok @a[0].VAR.dynamic, 'dynamic set correctly for reset Int @a[0]';
58+
} #4
59+
60+
#?pugs skip "is dynamic NYI"
61+
#?niecza skip "is dynamic NYI"
62+
#?rakudo.jvm skip "oh no, .VAR does not work on JVM"
63+
# not specifically typed
64+
{
65+
my %a is dynamic;
66+
ok %a.VAR.dynamic, 'dynamic set correctly for %a';
67+
ok %a<a>.VAR.dynamic, 'dynamic set correctly for non-existing %a<a>';
68+
%a<a> = 42;
69+
ok %a<a>.VAR.dynamic, 'dynamic set correctly for existing %a<a>';
70+
%a<a> = Nil;
71+
ok %a<a>.VAR.dynamic, 'dynamic set correctly for reset %a<a>';
72+
} #4
73+
74+
#?pugs skip "Int is dynamic NYI"
75+
#?niecza skip "Int is dynamic NYI"
76+
#?rakudo.jvm skip "oh no, .VAR does not work on JVM"
77+
# typed
78+
{
79+
my Int %a is dynamic(42);
80+
ok %a.VAR.dynamic, 'dynamic set correctly for Int %a';
81+
ok %a<a>.VAR.dynamic, 'dynamic set correctly for non-existing Int %a<a>';
82+
%a<a> = 42;
83+
ok %a<a>.VAR.dynamic, 'dynamic set correctly for existing Int %a<a>';
84+
%a<a> = Nil;
85+
ok %a<a>.VAR.dynamic, 'dynamic set correctly for reset Int %a<a>';
86+
} #4
87+
88+
# vim: ft=perl6

0 commit comments

Comments
 (0)