New tests (and TODO tests) for ~~ and overloading,
[p5sagit/p5-mst-13.2.git] / t / op / smobj.t
CommitLineData
a26136ef 1#!./perl
2
3BEGIN {
4 chdir 't';
5 @INC = '../lib';
6 require './test.pl';
7}
8
9plan tests => 5;
10
11use strict;
12use warnings;
13
14{
15 package Test::Object::NoOverload;
16 sub new { bless { key => 1 } }
17}
18
19{
20 my $obj = Test::Object::NoOverload->new;
21 isa_ok($obj, 'Test::Object::NoOverload');
22 my $r = eval { ($obj ~~ 'key') };
23
24 local $::TODO = 'To be implemented';
25
26 ok(
27 ! defined $r,
28 "we do not smart match against an object's underlying implementation",
29 );
30
31 like(
32 $@,
33 qr/overload/,
34 "we die when smart matching an obj with no ~~ overload",
35 );
36}
37
38{
39 package Test::Object::CopyOverload;
40 sub new { bless { key => 1 } }
41 use overload '~~' => sub { my %hash = %{ $_[0] }; %hash ~~ $_[1] };
42}
43
44{
45 my $obj = Test::Object::CopyOverload->new;
46 isa_ok($obj, 'Test::Object::CopyOverload');
47 ok($obj ~~ 'key', 'we are able to make an object ~~ overload');
48}