xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/lib/MyOverload.pm (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
1b39c5158Smillertpackage Overloaded;  ##no critic (Modules::RequireFilenameMatchesPackage)
2b39c5158Smillert
3b39c5158Smillertuse strict;
4b39c5158Smillert
5b39c5158Smillertsub new {
6b39c5158Smillert    my $class = shift;
7b39c5158Smillert    bless { string => shift, num => shift }, $class;
8b39c5158Smillert}
9b39c5158Smillert
10b39c5158Smillertpackage Overloaded::Compare;
11b39c5158Smillert
12b39c5158Smillertuse strict;
13b39c5158Smillertour @ISA = qw(Overloaded);
14b39c5158Smillert
15b39c5158Smillert# Sometimes objects have only comparison ops overloaded and nothing else.
16b39c5158Smillert# For example, DateTime objects.
17b39c5158Smillertuse overload
18b39c5158Smillert  q{eq} => sub { $_[0]->{string} eq $_[1] },
19b39c5158Smillert  q{==} => sub { $_[0]->{num} == $_[1] };
20b39c5158Smillert
21b39c5158Smillertpackage Overloaded::Ify;
22b39c5158Smillert
23b39c5158Smillertuse strict;
24b39c5158Smillertour @ISA = qw(Overloaded);
25b39c5158Smillert
26b39c5158Smillertuse overload
27256a93a4Safresh1  q{""} => sub {
28256a93a4Safresh1    @_ == 3 or die "Expected 3 parameters";
29256a93a4Safresh1    $_[0]->{string};
30256a93a4Safresh1  },
31256a93a4Safresh1  q{0+} => sub {
32256a93a4Safresh1    @_ == 3 or die "Expected 3 parameters";
33256a93a4Safresh1    $_[0]->{num};
34256a93a4Safresh1  };
35b39c5158Smillert
36*f2a19305Safresh1package Overloaded::Partial;
37*f2a19305Safresh1
38*f2a19305Safresh1our @ISA = qw(Overloaded);
39*f2a19305Safresh1use overload
40*f2a19305Safresh1  q{""} => sub { $_[0]->{string} },
41*f2a19305Safresh1  q{!=} => sub { $_[0]->{num} != $_[1] };
42*f2a19305Safresh1
43b39c5158Smillert1;
44