Avoid bug with immutable / around new in Moose by using BUILD method instead. Test...
[gitmo/MooseX-Emulate-Class-Accessor-Fast.git] / t / construction.t
diff --git a/t/construction.t b/t/construction.t
new file mode 100644 (file)
index 0000000..2c07602
--- /dev/null
@@ -0,0 +1,71 @@
+#!perl
+use strict;
+use Test::More tests => 9;
+
+#1
+require_ok("MooseX::Emulate::Class::Accessor::Fast");
+
+{
+  package MyClass;
+  use Moose;
+  with 'MooseX::Emulate::Class::Accessor::Fast';
+}
+
+{
+  package MyClass::MooseChild;
+  use Moose;
+  extends 'MyClass';
+}
+
+{
+  package MyClass::ImmutableMooseChild;
+  use Moose;
+  extends 'MyClass';
+  __PACKAGE__->meta->make_immutable;
+}
+
+{
+  package MyClass::TraditionalChild;
+  use base qw(MyClass);
+}
+
+{
+  package MyImmutableClass;
+  use Moose;
+  with 'MooseX::Emulate::Class::Accessor::Fast';
+  __PACKAGE__->meta->make_immutable;
+}
+
+{
+  package MyImmutableClass::MooseChild;
+  use Moose;
+  extends 'MyImmutableClass';
+}
+
+{
+  package MyImmutableClass::ImmutableMooseChild;
+  use Moose;
+  extends 'MyImmutableClass';
+  __PACKAGE__->meta->make_immutable;
+}
+
+{
+  package MyImmutableClass::TraditionalChild;
+  use base qw(MyImmutableClass);
+}
+
+# 2-9
+foreach my $class (qw/
+                      MyClass 
+                      MyImmutableClass 
+                      MyClass::MooseChild 
+                      MyClass::ImmutableMooseChild  
+                      MyClass::TraditionalChild 
+                      MyImmutableClass::MooseChild 
+                      MyImmutableClass::ImmutableMooseChild 
+                      MyImmutableClass::TraditionalChild
+                                                           /) {
+    my $instance = $class->new(foo => 'bar');
+    is($instance->{foo}, 'bar', $class . " has CAF construction behavior");
+}
+