4 use constant HAS_THREADS => eval{ require threads && require threads::shared };
7 use if !HAS_THREADS, 'Test::More',
8 (skip_all => "This is a test for threads ($@)");
9 use if $Test::More::VERSION >= 2.00, 'Test::More',
10 (skip_all => "Test::Builder2 has bugs about threads");
27 default => sub { 42 },
37 traits => [qw(MyTraits)],
42 my $o = MyClass->new(foo => Foo->new(value => 42));
44 my $x = MyClass->new(foo => Foo->new(value => 1));
47 $x->foo(Foo->new(value => 2));
51 MyClass->meta->make_immutable();
53 $x = MyClass->new(foo => Foo->new(value => 10));
54 is $x->foo->value, 10;
56 $x->foo(Foo->new(value => 20));
58 is $x->foo->value, 20;
60 is $x->bar, 42, 'callback for default';
63 is $o->foo->value, 42;
65 $o = MyClass->new(foo => Foo->new(value => 43));
66 is $o->foo->value, 43;
68 ok !$o->meta->is_immutable;