Source

p5-moox-struct / t / 07overloading.t

=head1 PURPOSE

Check that overloading to string and to arrayref work.

Also checks the C<CLONE> method.

=head1 AUTHOR

Toby Inkster E<lt>tobyink@cpan.orgE<gt>.

=head1 COPYRIGHT AND LICENCE

This software is copyright (c) 2012 by Toby Inkster.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut

use Test::More;
use MooX::Struct
	Point   => [ qw(x y) ],
	Point3D => [ -extends => [qw(Point)], qw(z) ],
;

my $point = Point->new(x => 3, y => 4);
is("$point", "3 4", "Point stringifies correctly");

my $point2 = Point3D->new(x => 3, y => 4, z => 5);
is("$point2", "3 4 5", "Point3D stringifies correctly");

is_deeply( [ @$point2 ], [qw(3 4 5)], "Point3D casts to array properly" );

my $clone = CLONE $point2;
is("$clone", "3 4 5", "cloning is awesome");

done_testing;