use lib qw(t); use Carp; use Hash::AutoHash::Record qw(autohash_tied); use Test::More; use Test::Deep; use recordUtil; ################################################################################# # test defaults ################################################################################# sub test_defaults { my($label,$start,$correct_start,$defaults,$correct_defaults)=@_; my $record=new Hash::AutoHash::Record %$start; # cmp_record("$label initial value",$record,$initial_value); autohash_tied($record)->defaults($defaults); cmp_record("$label after setting defaults",$record,$correct_start); my $actual=autohash_tied($record)->defaults; cmp_deeply($actual,$correct_defaults,"$label get defaults scalar context"); my %actual=autohash_tied($record)->defaults; cmp_deeply(\%actual,$correct_defaults,"$label get defaults array context"); # clear should set to new defaults %$record=(); cmp_record("$label after clear set to new defaults",$record,$correct_defaults); } test_defaults('initial empty. defaults empty.',{},{},{},{}); test_defaults('initial all usual empty values. defaults empty.', {single=>'',multi=>[],avp_single=>{},avp_multi=>\{}, nested=>new Hash::AutoHash::Record}, {single=>'',multi=>[],avp_single=>new_SV,avp_multi=>new_MV,nested=>new_Nested}, {}, {}); test_defaults('initial empty. defaults all usual empty values.', {}, {}, {single=>'',multi=>[],avp_single=>{},avp_multi=>\{}, nested=>new Hash::AutoHash::Record}, {single=>'',multi=>[],avp_single=>new_SV,avp_multi=>new_MV,nested=>new_Nested}); test_defaults('initial all usual non-empty values. defaults empty.', {single=>'value1',multi=>['value2'],avp_single=>{key3=>'value3'}, avp_multi=>{key4=>['value4']}, nested=>new Hash::AutoHash::Record key5=>'value5'}, {single=>'value1',multi=>['value2'],avp_single=>new_SV(key3=>'value3'), avp_multi=>new_MV(key4=>['value4']), nested=>new_Nested(key5=>'value5')}, {}, {}); test_defaults('initial empty. defaults all usual non-empty values.', {}, {}, {single=>'value1',multi=>['value2'],avp_single=>{key3=>'value3'}, avp_multi=>{key4=>['value4']}, nested=>new Hash::AutoHash::Record key5=>'value5'}, {single=>'value1',multi=>['value2'],avp_single=>new_SV(key3=>'value3'), avp_multi=>new_MV(key4=>['value4']), nested=>new_Nested(key5=>'value5')}); test_defaults('initial & defaults all usual non-empty values.', {single=>'value1',multi=>['value2'],avp_single=>{key3=>'value3'}, avp_multi=>{key4=>['value4']}, nested=>new Hash::AutoHash::Record key5=>'value5'}, {single=>'value1',multi=>['value2'],avp_single=>new_SV(key3=>'value3'), avp_multi=>new_MV(key4=>['value4']), nested=>new_Nested(key5=>'value5')}, {single=>'new_value1',multi=>['new_value2'],avp_single=>{key3=>'new_value3'}, avp_multi=>{key4=>['new_value4']}, nested=>new Hash::AutoHash::Record key5=>'new_value5'}, {single=>'new_value1',multi=>['new_value2'],avp_single=>new_SV(key3=>'new_value3'), avp_multi=>new_MV(key4=>['new_value4']), nested=>new_Nested(key5=>'new_value5')}); done_testing();