#!perl -Tw use warnings; use strict; use Test::More tests => 7; BEGIN { use_ok( 'WWW::Scripter' ); } my $mech = WWW::Scripter->new(); isa_ok( $mech, 'WWW::Scripter' ); { package _::Clonable; sub init { bless \(my $x = '') } sub clone { my $clone = bless \(my $x = ${+shift}); $$clone .= 'clone' . shift; $clone; } } { package _::PlainObject; sub init { bless [] } } { package _::True; sub init { ++our $count; 1 } } { package _::False; sub init { ++our $count; 0 } } ++$INC{"_/$_.pm"},$mech->use_plugin("_::$_") for qw/ False Clonable PlainObject True /; my $wclone = $mech->clone; is ${$mech->plugin('_::Clonable')}, '', 'plugin with clone method (original)'; is ${$wclone->plugin('_::Clonable')}, 'clone' . $wclone, 'plugin with clone method (clone)'; is $mech->plugin('_::PlainObject'), $wclone->plugin('_::PlainObject'), 'plugin object without clone method'; is $_::True::count, 1, 'no cloning for true non-object'; is $_::False::count, 1, 'no cloning for false non-object';