un-TODO
[gitmo/Package-Stash-PP.git] / t / 001-basic.t
index a3ab29d..b3cecfb 100644 (file)
@@ -228,19 +228,46 @@ is($foo_stash->get_package_symbol('@foo'), $ARRAY, '... got the right values for
 # check some errors
 
 dies_ok {
-    $foo_stash->add_package_symbol('bar');
-} '... no sigil for bar';
+    $foo_stash->add_package_symbol('@bar', {})
+} "can't initialize a slot with the wrong type of value";
 
 dies_ok {
-    $foo_stash->remove_package_symbol('bar');
-} '... no sigil for bar';
+    $foo_stash->add_package_symbol('bar', [])
+} "can't initialize a slot with the wrong type of value";
 
 dies_ok {
-    $foo_stash->get_package_symbol('bar');
-} '... no sigil for bar';
+    $foo_stash->add_package_symbol('$bar', sub { })
+} "can't initialize a slot with the wrong type of value";
+
+{
+    package Bar;
+    open *foo, '<', $0;
+}
 
 dies_ok {
-    $foo_stash->has_package_symbol('bar');
-} '... no sigil for bar';
+    $foo_stash->add_package_symbol('$bar', *Bar::foo{IO})
+} "can't initialize a slot with the wrong type of value";
+
+# check compile time manipulation
+
+{
+    package Baz;
+
+    our $foo = 23;
+    our @foo = "bar";
+    our %foo = (baz => 1);
+    sub foo { }
+    open *foo, '<', $0;
+    BEGIN { Stash::Manip->new(__PACKAGE__)->remove_package_symbol('&foo') }
+}
+
+{
+    my $stash = Stash::Manip->new('Baz');
+    is(${ $stash->get_package_symbol('$foo') }, 23, "got \$foo");
+    is_deeply($stash->get_package_symbol('@foo'), ['bar'], "got \@foo");
+    is_deeply($stash->get_package_symbol('%foo'), {baz => 1}, "got \%foo");
+    ok(!$stash->has_package_symbol('&foo'), "got \&foo");
+    is($stash->get_package_symbol('foo'), *Baz::foo{IO}, "got foo");
+}
 
 done_testing;