]> git.vpit.fr Git - perl/modules/Variable-Magic.git/blob - t/30-scalar.t
Importing Variable-Magic-0.01
[perl/modules/Variable-Magic.git] / t / 30-scalar.t
1 #!perl -T
2
3 use Test::More tests => 13;
4
5 use Variable::Magic qw/wizard cast dispell/;
6
7 my @c = (0) x 5;
8 my @x = (0) x 5;
9
10 sub check {
11  for (0 .. 4) { return 0 unless $c[$_] == $x[$_]; }
12  return 1;
13 }
14
15 my $i = -1;
16 my $wiz = wizard get   => sub { ++$c[0] },
17                  set   => sub { ++$c[1] },
18                  len   => sub { ++$c[2] },
19                  clear => sub { ++$c[3] },
20                  free  => sub { ++$c[4] };
21 ok(check(), 'scalar : create wizard');
22
23 my $n = int rand 1000;
24 my $a = $n;
25
26 cast $a, $wiz;
27 ok(check(), 'scalar : cast');
28
29 my $b = $a;
30 ++$x[0];
31 ok(check(), 'scalar : assign to');
32
33 $b = "X${a}Y";
34 ++$x[0];
35 ok(check(), 'scalar : interpolate');
36
37 $b = \$a;
38 ok(check(), 'scalar : reference');
39
40 $a = 123;
41 ++$x[1];
42 ok(check(), 'scalar : assign');
43
44 ++$a;
45 ++$x[0]; ++$x[1];
46 ok(check(), 'scalar : increment');
47
48 --$a;
49 ++$x[0]; ++$x[1];
50 ok(check(), 'scalar : decrement');
51
52 $a *= 1.5;
53 ++$x[0]; ++$x[1];
54 ok(check(), 'scalar : multiply');
55
56 $a /= 1.5;
57 ++$x[0]; ++$x[1];
58 ok(check(), 'scalar : divide');
59
60 {
61  my $b = $n;
62  cast $b, $wiz;
63 }
64 ++$x[4];
65 ok(check(), 'scalar : scope end');
66
67 undef $a;
68 ++$x[1];
69 ok(check(), 'scalar : undef');
70
71 dispell $a, $wiz;
72 ok(check(), 'scalar : dispell');