1# Regression test for bug in 'grow scalar slot into ARRAY'
2#   bug occurs when old value is non-ARRAY reference, eg, an object
3
4use lib qw(t);
5use Carp;
6use Hash::AutoHash::Args;
7use Hash::AutoHash::Args::V0;
8use Test::More;
9use Test::Deep;
10
11my $obj=bless {name=>'I am an object'},'Object';
12my $args=new Hash::AutoHash::Args (obj=>$obj);
13cmp_deeply($args->obj,$obj,'V1 arg=>one object');
14my $args=new Hash::AutoHash::Args (obj=>$obj,obj=>$obj);
15cmp_deeply($args->obj,[$obj,$obj],
16	   'V1 arg=>two objects: grow single valued slot into ARRAY');
17my $args=new Hash::AutoHash::Args (obj=>$obj,obj=>$obj,obj=>$obj);
18cmp_deeply($args->obj,[$obj,$obj,$obj],
19	   'V1 arg=>three objects: ARRAY slot stays ARRAY');
20
21# do it again for V0
22my $obj=bless {name=>'I am an object'},'Object';
23my $args=new Hash::AutoHash::Args::V0 (obj=>$obj);
24cmp_deeply($args->obj,$obj,'V0 arg=>one object');
25my $args=new Hash::AutoHash::Args::V0 (obj=>$obj,obj=>$obj);
26cmp_deeply($args->obj,[$obj,$obj],
27	   'V0 arg=>two objects: grow single valued slot into ARRAY');
28my $args=new Hash::AutoHash::Args::V0 (obj=>$obj,obj=>$obj,obj=>$obj);
29cmp_deeply($args->obj,[$obj,$obj,$obj],
30	   'V0 arg=>three objects: ARRAY slot stays ARRAY');
31
32done_testing();
33