Commit | Line | Data |
60ad2cb7 |
1 | #!/usr/bin/perl |
fde8e43f |
2 | # This is automatically generated by author/import-moose-test.pl. |
3 | # DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!! |
4 | use t::lib::MooseCompat; |
60ad2cb7 |
5 | |
6 | use strict; |
7 | use warnings; |
8 | |
6475f69d |
9 | use Test::More; |
60ad2cb7 |
10 | |
11 | use Mouse::Meta::Class; |
12 | |
13 | { |
14 | package Class; |
15 | use Mouse; |
16 | |
17 | package Foo; |
18 | use Mouse::Role; |
19 | sub foo_role_applied { 1 } |
20 | |
21 | package Bar; |
22 | use Mouse::Role; |
23 | sub bar_role_applied { 1 } |
24 | } |
25 | |
26 | # try without caching first |
27 | |
28 | { |
29 | my $class_and_foo_1 = Mouse::Meta::Class->create_anon_class( |
30 | superclasses => ['Class'], |
31 | roles => ['Foo'], |
32 | ); |
33 | |
34 | my $class_and_foo_2 = Mouse::Meta::Class->create_anon_class( |
35 | superclasses => ['Class'], |
36 | roles => ['Foo'], |
37 | ); |
38 | |
39 | isnt $class_and_foo_1->name, $class_and_foo_2->name, |
40 | 'creating the same class twice without caching results in 2 classes'; |
41 | |
42 | map { ok $_->name->foo_role_applied } ($class_and_foo_1, $class_and_foo_2); |
43 | } |
44 | |
45 | # now try with caching |
46 | |
47 | { |
48 | my $class_and_foo_1 = Mouse::Meta::Class->create_anon_class( |
49 | superclasses => ['Class'], |
50 | roles => ['Foo'], |
51 | cache => 1, |
52 | ); |
53 | |
54 | my $class_and_foo_2 = Mouse::Meta::Class->create_anon_class( |
55 | superclasses => ['Class'], |
56 | roles => ['Foo'], |
57 | cache => 1, |
58 | ); |
59 | |
60 | is $class_and_foo_1->name, $class_and_foo_2->name, |
61 | 'with cache, the same class is the same class'; |
62 | |
63 | map { ok $_->name->foo_role_applied } ($class_and_foo_1, $class_and_foo_2); |
64 | |
65 | my $class_and_bar = Mouse::Meta::Class->create_anon_class( |
66 | superclasses => ['Class'], |
67 | roles => ['Bar'], |
68 | cache => 1, |
69 | ); |
70 | |
71 | isnt $class_and_foo_1->name, $class_and_bar, |
72 | 'class_and_foo and class_and_bar are different'; |
73 | |
74 | ok $class_and_bar->name->bar_role_applied; |
75 | } |
6475f69d |
76 | |
77 | # This tests that a cached metaclass can be reinitialized and still retain its |
78 | # metaclass object. |
79 | { |
80 | my $name = Mouse::Meta::Class->create_anon_class( |
81 | superclasses => ['Class'], |
82 | cache => 1, |
83 | )->name; |
84 | |
85 | $name->meta->reinitialize( $name ); |
86 | |
87 | can_ok( $name, 'meta' ); |
88 | } |
89 | |
90 | done_testing; |