remove extraneous garbage from tests
[gitmo/Class-C3.git] / t / 24_more_overload.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 3;
7
8 {
9     package BaseTest;
10     use Class::C3;
11     sub new { bless {} => shift }    
12     
13     package OverloadingTest;
14     use Class::C3;
15     use base 'BaseTest';        
16     use overload '+'  => sub { die "called plus operator in OT" },
17                  fallback => 0;
18     
19     package InheritingFromOverloadedTest;
20     use base 'OverloadingTest';
21     use Class::C3;
22     use overload '+'  => sub { die "called plus operator in IFOT" },
23                  fallback => 1;
24
25     package IFOTX;
26     use Class::C3;
27     use base 'OverloadingTest';
28
29     package IFIFOT;
30     use Class::C3;
31     use base 'InheritingFromOverloadedTest';
32
33     package Foo;
34     use Class::C3;
35     use base 'BaseTest';
36     use overload '+'  => sub { die "called plus operator in Foo" },
37                  fallback => 1;
38
39     package Bar;
40     use Class::C3;
41     use base 'Foo';
42     use overload '+'  => sub { die "called plus operator in Bar" },
43                  fallback => 0;
44
45     package Baz;
46     use Class::C3;
47     use base 'Bar';
48 }
49
50 Class::C3::initialize();
51
52 my $x = IFOTX->new();
53 eval { $x += 1 };
54 like($@, qr/no method found,/);
55
56 my $y = IFIFOT->new();
57 eval { $y += 1 };
58 like($@, qr/called plus operator in IFOT/);
59
60 my $z = Baz->new();
61 eval { $z += 1 };
62 like($@, qr/no method found,/);
63