2 use warnings FATAL => 'all';
3 use MooseX::Antlers::Compiler;
9 my $compiler = MooseX::Antlers::Compiler->load_with_compiler('One');
12 &cmp_ok(One->get_called_foo, '==', @_); # cmp_ok has a $$$;$ proto
17 ok(One->can('foo'), 'foo accessor installed');
19 dies_ok { One->new } 'foo is required';
21 foo_called(0 => 'trigger not called yet');
23 my $one = One->new(foo => 1);
25 foo_called(1 => 'trigger called once (constructor)');
27 cmp_ok($one->foo, '==', 1, 'read ok');
29 foo_called(1 => 'trigger not called for read');
33 foo_called(2 => 'trigger called for setter');
36 my %orig_src = map +($_ => join '', Dump(One->can($_))), qw(new DESTROY foo);
38 my $orig_foo_meta = Dump(One->meta);
42 use Data::Dump::Streamer;
44 my $compiled = $compiler->compiled_source;
46 #warn $compiled; done_testing; exit 0;
48 Class::Unload->unload('One');
49 Class::MOP::remove_metaclass_by_name('One');
51 eval "no warnings; $compiled";
53 die "Shit. failed.\n\n${compiled}\n\nError: $@" if $@;
55 use Data::Dumper::Concise;
57 my %compiled_src = map +($_ => join '', Dump(One->can($_))), qw(new DESTROY foo);
59 foreach my $method (qw(new DESTROY foo)) {
60 is($compiled_src{$method}, $orig_src{$method}, "${method} restored ok");
65 # write test_class method that checks method including call
67 # build compiled source
68 # eval compiled source
69 # run test_class after that as well as before unload
71 #warn Dumper \%attr_refs;
72 #warn Dumper \%attr_et;