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