c4e873618b29caa156c23ac0329298b1f9f7f0b4
[gitmo/Package-Stash.git] / t / scalar-values.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use lib 't/lib';
5 use Test::More;
6 use Test::Fatal;
7
8 use B;
9 use Package::Stash;
10 use Scalar::Util qw(reftype);
11 use Symbol;
12
13 my $Bar = Package::Stash->new('Bar');
14
15 my $pviv = 3;
16 $pviv =~ s/3/4/;
17 isa_ok(B::svref_2object(\$pviv), 'B::PVIV');
18 is(exception { $Bar->add_symbol('$pviv', \$pviv) }, undef,
19    "can add PVIV values");
20
21 my $pvnv = 4.5;
22 $pvnv =~ s/4/5/;
23 isa_ok(B::svref_2object(\$pvnv), 'B::PVNV');
24 is(exception { $Bar->add_symbol('$pvnv', \$pvnv) }, undef,
25    "can add PVNV values");
26
27 my $pvmg = "foo";
28 bless \$pvmg, 'Foo';
29 isa_ok(B::svref_2object(\$pvmg), 'B::PVMG');
30 is(exception { $Bar->add_symbol('$pvmg', \$pvmg) }, undef,
31    "can add PVMG values");
32
33 my $regexp = qr/foo/;
34 isa_ok(B::svref_2object($regexp), 'B::REGEXP');
35 is(exception { $Bar->add_symbol('$regexp', $regexp) }, undef,
36    "can add REGEXP values");
37
38 my $pvgv = Symbol::gensym;
39 isa_ok(B::svref_2object($pvgv), 'B::GV');
40 isnt(exception { $Bar->add_symbol('$pvgv', $pvgv) }, undef,
41      "can't add PVGV values");
42
43 my $pvlv = "foo";
44 isa_ok(B::svref_2object(\substr($pvlv, 0, 1)), 'B::PVLV');
45 is(exception { $Bar->add_symbol('$pvlv', \substr($pvlv, 0, 1)) }, undef,
46    "can add PVLV values");
47
48 my $vstring = v1.2.3;
49 is(reftype(\$vstring), 'VSTRING');
50 is(exception { $Bar->add_symbol('$vstring', \$vstring) }, undef,
51    "can add vstring values");
52
53 done_testing;