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