bump version to 0.77
[gitmo/Class-MOP.git] / t / 012_package_variables.t
index 7544d98..860ddb5 100644 (file)
@@ -1,14 +1,10 @@
-#!/usr/bin/perl
-
 use strict;
 use warnings;
 
-use Test::More tests => 80;
+use Test::More tests => 86;
 use Test::Exception;
 
-BEGIN {
-    use_ok('Class::MOP');        
-}
+use Class::MOP;
 
 {
     package Foo;
@@ -190,7 +186,7 @@ is(Foo->meta->get_package_symbol('$foo'), $SCALAR, '... got the right value for
     ok(!defined(*{"Foo::foo"}{HASH}), '... the %foo slot has been removed successfully');
     ok(defined(*{"Foo::foo"}{ARRAY}), '... the @foo slot has NOT been removed');   
     ok(defined(*{"Foo::foo"}{CODE}), '... the &foo slot has NOT been removed');   
-    ok(defined(*{"Foo::foo"}{SCALAR}), '... the $foo slot has NOT been removed');            
+    ok(defined(${"Foo::foo"}), '... the $foo slot has NOT been removed');            
 }
 
 lives_ok {
@@ -210,7 +206,25 @@ is(Foo->meta->get_package_symbol('$foo'), $SCALAR, '... got the right value for
     ok(!defined(*{"Foo::foo"}{HASH}), '... the %foo slot has been removed successfully');    
     ok(!defined(*{"Foo::foo"}{CODE}), '... the &foo slot has now been removed');       
     ok(defined(*{"Foo::foo"}{ARRAY}), '... the @foo slot has NOT been removed');   
-    ok(defined(*{"Foo::foo"}{SCALAR}), '... the $foo slot has NOT been removed');            
+    ok(defined(${"Foo::foo"}), '... the $foo slot has NOT been removed');            
+}
+
+lives_ok {
+    Foo->meta->remove_package_symbol('$foo');
+} '... removed $Foo::foo successfully';
+
+ok(!Foo->meta->has_package_symbol('$foo'), '... the $foo slot no longer exists');
+
+ok(Foo->meta->has_package_symbol('@foo'), '... the @foo slot still exists');
+
+is(Foo->meta->get_package_symbol('@foo'), $ARRAY, '... got the right values for @Foo::foo');
+
+{
+    no strict 'refs';
+    ok(!defined(*{"Foo::foo"}{HASH}), '... the %foo slot has been removed successfully');    
+    ok(!defined(*{"Foo::foo"}{CODE}), '... the &foo slot has now been removed');   
+    ok(!defined(${"Foo::foo"}), '... the $foo slot has now been removed');                           
+    ok(defined(*{"Foo::foo"}{ARRAY}), '... the @foo slot has NOT been removed');    
 }