Upgrade to Test::Simple 0.53
[p5sagit/p5-mst-13.2.git] / lib / Test / Simple / t / overload.t
CommitLineData
7483b81c 1#!/usr/bin/perl -w
30e302f8 2
3BEGIN {
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 13use strict;
30e302f8 14use Test::More;
15
16BEGIN {
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
26package Overloaded;
27
28use overload
7483b81c 29 q{""} => sub { $_[0]->{string} },
30 q{0} => sub { $_[0]->{num} },
31 fallback => 1;
30e302f8 32
33sub new {
34 my $class = shift;
7483b81c 35 bless { string => shift, num => shift }, $class;
30e302f8 36}
37
38
39package main;
40
7483b81c 41my $obj = Overloaded->new('foo', 42);
42isa_ok $obj, 'Overloaded';
30e302f8 43
7483b81c 44is $obj, 'foo', 'is() with string overloading';
45cmp_ok $obj, 'eq', 'foo', 'cmp_ok() ...';
46cmp_ok $obj, '==', 'foo', 'cmp_ok() with number overloading';
30e302f8 47
7483b81c 48is_deeply [$obj], ['foo'], 'is_deeply with string overloading';
49ok eq_array([$obj], ['foo']), 'eq_array ...';
50ok eq_hash({foo => $obj}, {foo => 'foo'}), 'eq_hash ...';