This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade experimental from version 0.17 to 0.18
[perl5.git] / cpan / experimental / t / basic.t
1 #! perl
2
3 use strict;
4 use warnings;
5
6 use Test::More 0.89;
7
8 local $SIG{__WARN__} = sub { fail("Got unexpected warning"); diag($_[0]) };
9
10 if ($] >= 5.010000) {
11         is (eval <<'END', 1, 'state compiles') or diag $@;
12         use experimental 'state';
13         state $foo = 1;
14         is($foo, 1, '$foo is 1');
15         1;
16 END
17 }
18
19 if ($] >= 5.010001) {
20         is (eval <<'END', 1, 'switch compiles') or diag $@;
21         use experimental 'switch';
22         sub bar { 1 };
23         given(1) {
24                 when (\&bar) {
25                         pass("bar matches 1");
26                 }
27                 default {
28                         fail("bar matches 1");
29                 }
30         }
31         1;
32 END
33 }
34
35 if ($] >= 5.010001) {
36         is (eval <<'END', 1, 'smartmatch compiles') or diag $@;
37         use experimental 'smartmatch';
38         sub baz { 1 };
39         is(1 ~~ \&baz, 1, "is 1");
40         1;
41 END
42 }
43
44 if ($] >= 5.018) {
45         is (eval <<'END', 1, 'lexical subs compiles') or diag $@;
46         use experimental 'lexical_subs';
47         my sub foo { 1 };
48         is(foo(), 1, "foo is 1");
49         1;
50 END
51 }
52
53 if ($] >= 5.021005) {
54         is (eval <<'END', 1, 'ref aliasing compiles') or diag $@;
55         use experimental 'refaliasing';
56         my (@a, @b);
57         \@a = \@b;
58         is(\@a, \@b, '@a and @b are the same after \@a=\@b');
59         1;
60 END
61 }
62
63 done_testing;
64