#!/usr/bin/env perl package Left; sub left { __PACKAGE__ } sub both { __PACKAGE__ } package Right; sub right { __PACKAGE__ } sub both { __PACKAGE__ } package main; use strict; use warnings; use Test::More tests => 32; { use autobox SCALAR => [ qw(Left Right) ]; ok(42->autobox_class->isa('Left'), 'LR1: isa Left'); ok(42->autobox_class->isa('Right'), 'LR1: isa Right'); ok(42->autobox_class->can('left'), 'LR1: can left'); ok(42->autobox_class->can('both'), 'LR1: can both'); ok(42->autobox_class->can('right'), 'LR1: can right'); is(42->left, 'Left', 'LR1: left'); is(42->both, 'Left', 'LR1: both'); is(42->right, 'Right', 'LR1: right'); } { use autobox SCALAR => 'Left'; use autobox SCALAR => 'Right'; ok(42->autobox_class->isa('Left'), 'LR2: isa Left'); ok(42->autobox_class->isa('Right'), 'LR2: isa Right'); ok(42->autobox_class->can('left'), 'LR2: can left'); ok(42->autobox_class->can('both'), 'LR2: can both'); ok(42->autobox_class->can('right'), 'LR2: can right'); is(42->left, 'Left', 'LR2: left'); is(42->both, 'Left', 'LR2: both'); is(42->right, 'Right', 'LR2: right'); } { use autobox SCALAR => [ qw(Right Left) ]; ok(42->autobox_class->isa('Left'), 'RL1: isa Left'); ok(42->autobox_class->isa('Right'), 'RL1: isa Right'); ok(42->autobox_class->can('left'), 'RL1: can left'); ok(42->autobox_class->can('both'), 'RL1: can both'); ok(42->autobox_class->can('right'), 'RL1: can right'); is(42->left, 'Left', 'RL1: left'); is(42->both, 'Right', 'RL1: both'); is(42->right, 'Right', 'RL1: right'); } { use autobox SCALAR => 'Right'; use autobox SCALAR => 'Left'; ok(42->autobox_class->isa('Left'), 'RL2: isa Left'); ok(42->autobox_class->isa('Right'), 'RL2: isa Right'); ok(42->autobox_class->can('left'), 'RL2: can left'); ok(42->autobox_class->can('both'), 'RL2: can both'); ok(42->autobox_class->can('right'), 'RL2: can right'); is(42->left, 'Left', 'RL2: left'); is(42->both, 'Right', 'RL2: both'); is(42->right, 'Right', 'RL2: right'); }