tweaking formatting to match existing tests and code, also change log stuff
[gitmo/Moose.git] / t / 010_basics / 014_create_anon.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 11;
7
8 BEGIN {
9     use_ok('Moose::Meta::Class');
10     use_ok('Moose');
11     use_ok('Moose::Role');
12 }
13
14
15     package Class;
16     use Moose;
17     
18     package Foo;
19     use Moose::Role;
20     sub foo_role_applied { 1 }
21     
22     package Bar;
23     use Moose::Role;
24     sub bar_role_applied { 1 }
25 }
26
27 # try without caching first
28
29 {
30     my $class_and_foo_1 = Moose::Meta::Class->create_anon_class(
31         superclasses => ['Class'],
32         roles        => ['Foo'],
33     );
34     
35     my $class_and_foo_2 = Moose::Meta::Class->create_anon_class(
36         superclasses => ['Class'],
37         roles        => ['Foo'],
38     );
39     
40     isnt $class_and_foo_1->name, $class_and_foo_2->name,
41       'creating the same class twice without caching results in 2 classes';
42
43     map { ok $_->name->foo_role_applied } ($class_and_foo_1, $class_and_foo_2);
44 }
45
46 # now try with caching
47
48 {
49     my $class_and_foo_1 = Moose::Meta::Class->create_anon_class(
50         superclasses => ['Class'],
51         roles        => ['Foo'],
52         cache        => 1,
53     );
54     
55     my $class_and_foo_2 = Moose::Meta::Class->create_anon_class(
56         superclasses => ['Class'],
57         roles        => ['Foo'],
58         cache        => 1,
59     );
60     
61     is $class_and_foo_1->name, $class_and_foo_2->name,
62       'with cache, the same class is the same class';
63     
64     map { ok $_->name->foo_role_applied } ($class_and_foo_1, $class_and_foo_2);
65     
66     my $class_and_bar = Moose::Meta::Class->create_anon_class(
67         superclasses => ['Class'],
68         roles        => ['Bar'],
69         cache        => 1,
70     );
71
72     isnt $class_and_foo_1->name, $class_and_bar,
73       'class_and_foo and class_and_bar are different';
74     
75     ok $class_and_bar->name->bar_role_applied;
76 }