Commit | Line | Data |
7483b81c |
1 | #!/usr/bin/perl -w |
30e302f8 |
2 | |
3 | BEGIN { |
4 | if( $ENV{PERL_CORE} ) { |
5 | chdir 't'; |
6 | @INC = ('../lib', 'lib'); |
7 | } |
8 | else { |
9 | unshift @INC, 't/lib'; |
10 | } |
11 | } |
30e302f8 |
12 | |
7483b81c |
13 | use strict; |
30e302f8 |
14 | use Test::More; |
15 | |
16 | BEGIN { |
17 | if( !eval "require overload" ) { |
18 | plan skip_all => "needs overload.pm"; |
19 | } |
20 | else { |
7483b81c |
21 | plan tests => 7; |
30e302f8 |
22 | } |
23 | } |
24 | |
25 | |
26 | package Overloaded; |
27 | |
28 | use overload |
7483b81c |
29 | q{""} => sub { $_[0]->{string} }, |
30 | q{0} => sub { $_[0]->{num} }, |
31 | fallback => 1; |
30e302f8 |
32 | |
33 | sub new { |
34 | my $class = shift; |
7483b81c |
35 | bless { string => shift, num => shift }, $class; |
30e302f8 |
36 | } |
37 | |
38 | |
39 | package main; |
40 | |
7483b81c |
41 | my $obj = Overloaded->new('foo', 42); |
42 | isa_ok $obj, 'Overloaded'; |
30e302f8 |
43 | |
7483b81c |
44 | is $obj, 'foo', 'is() with string overloading'; |
45 | cmp_ok $obj, 'eq', 'foo', 'cmp_ok() ...'; |
46 | cmp_ok $obj, '==', 'foo', 'cmp_ok() with number overloading'; |
30e302f8 |
47 | |
7483b81c |
48 | is_deeply [$obj], ['foo'], 'is_deeply with string overloading'; |
49 | ok eq_array([$obj], ['foo']), 'eq_array ...'; |
50 | ok eq_hash({foo => $obj}, {foo => 'foo'}), 'eq_hash ...'; |