bump all the versions to 0.76
[gitmo/Class-MOP.git] / t / 080_meta_package.t
index 4a6f2f5..a82ff27 100644 (file)
@@ -1,18 +1,20 @@
-#!/usr/bin/perl
-
 use strict;
 use warnings;
 
-use Test::More tests => 92;
+use Test::More tests => 97;
 use Test::Exception;
 
-BEGIN {
-    use_ok('Class::MOP');        
-    use_ok('Class::MOP::Package');            
-}
+use Class::MOP;
+use Class::MOP::Package;
+
+
+dies_ok { Class::MOP::Package->get_all_package_symbols } q{... can't call get_all_package_symbols() as a class method};
+dies_ok { Class::MOP::Package->name } q{... can't call name() as a class method};
 
 {
     package Foo;
+
+    use constant SOME_CONSTANT => 1;
     
     sub meta { Class::MOP::Package->initialize('Foo') }
 }
@@ -22,6 +24,7 @@ BEGIN {
 
 ok(!defined($Foo::{foo}), '... the %foo slot has not been created yet');
 ok(!Foo->meta->has_package_symbol('%foo'), '... the meta agrees');
+ok(!defined($Foo::{foo}), '... checking doesn\' vivify');
 
 lives_ok {
     Foo->meta->add_package_symbol('%foo' => { one => 1 });
@@ -229,29 +232,50 @@ is(Foo->meta->get_package_symbol('@foo'), $ARRAY, '... got the right values for
 # get_all_package_symbols
 
 {
-    my %syms = Foo->meta->get_all_package_symbols;
-
+    my $syms = Foo->meta->get_all_package_symbols;
     is_deeply(
-        [ sort keys %syms ],
+        [ sort keys %{ $syms } ],
         [ sort Foo->meta->list_all_package_symbols ],
         '... the fetched symbols are the same as the listed ones'
     ); 
 }
 
 {
-    my %syms = Foo->meta->get_all_package_symbols('CODE');
+    my $syms = Foo->meta->get_all_package_symbols('CODE');
 
     is_deeply(
-        [ sort keys %syms ],
+        [ sort keys %{ $syms } ],
         [ sort Foo->meta->list_all_package_symbols('CODE') ],
         '... the fetched symbols are the same as the listed ones'
     );
     
-    foreach my $symbol (keys %syms) {
-        is($syms{$symbol}, Foo->meta->get_package_symbol('&' . $symbol), '... got the right symbol');
+    foreach my $symbol (keys %{ $syms }) {
+        is($syms->{$symbol}, Foo->meta->get_package_symbol('&' . $symbol), '... got the right symbol');
     } 
 }
 
+{
+    Foo->meta->add_package_symbol('%zork');
+
+    my $syms = Foo->meta->get_all_package_symbols('HASH');
+
+    is_deeply(
+        [ sort keys %{ $syms } ],
+        [ sort Foo->meta->list_all_package_symbols('HASH') ],
+        '... the fetched symbols are the same as the listed ones'
+    );
+
+    foreach my $symbol (keys %{ $syms }) {
+        is($syms->{$symbol}, Foo->meta->get_package_symbol('%' . $symbol), '... got the right symbol');
+    }
+
+    no warnings 'once';
+    is_deeply(
+        $syms,
+        { zork => \%Foo::zork },
+        "got the right ones",
+    );
+}
 # check some errors
 
 dies_ok {