X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F23_is_X_value.t;h=c43b3a369e1e6cbf97b7598f060d68ba65d07010;hb=cf5b7ab163f8ac123ebc9bb1156e79646cd5bd2f;hp=df3b0ea7e1cfde387d1cbc2a5ba0adf239d867dd;hpb=a2bd8f877a81ff4d2af16771ea9b372db9be19c7;p=scpubgit%2FQ-Branch.git diff --git a/t/23_is_X_value.t b/t/23_is_X_value.t index df3b0ea..c43b3a3 100644 --- a/t/23_is_X_value.t +++ b/t/23_is_X_value.t @@ -6,6 +6,8 @@ use Test::Exception; use Scalar::Util 'refaddr'; use Storable 'nfreeze'; +BEGIN { $ENV{SQLA_ISVALUE_IGNORE_AUTOGENERATED_STRINGIFICATION} = 0 } + use SQL::Abstract qw(is_plain_value is_literal_value); # fallback setting is inheriting starting p5 50853fa9 (run up to 5.17.0) @@ -14,6 +16,22 @@ use constant STRINGIFIER_CAN_RETURN_IVS => ( ($] < 5.008) ? 0 : 1 ); { package # hideee + SQLATest::SillyBool; + + use overload + # *DELIBERATELY* unspecified + #fallback => 1, + bool => sub { ${$_[0]} }, + ; + + package # hideee + SQLATest::SillyBool::Subclass; + + our @ISA = 'SQLATest::SillyBool'; +} + +{ + package # hideee SQLATest::SillyInt; use overload @@ -103,6 +121,8 @@ use constant STRINGIFIER_CAN_RETURN_IVS => ( ($] < 5.008) ? 0 : 1 ); } for my $case ( + { class => 'SQLATest::SillyBool', can_math => 0, should_str => 1 }, + { class => 'SQLATest::SillyBool::Subclass', can_math => 0, should_str => 1 }, { class => 'SQLATest::SillyInt', can_math => 0, should_str => 1 }, { class => 'SQLATest::SillyInt::Subclass', can_math => 0, should_str => 1 }, { class => 'SQLATest::SillierInt', can_math => 0, should_str => 0 }, @@ -142,7 +162,7 @@ for my $case ( if (STRINGIFIER_CAN_RETURN_IVS and $can_cmp) { is_deeply( is_plain_value $num, - [ $num ], + \$num, "stringification detected on $case->{class}", ) || diag explain $case; } @@ -150,13 +170,13 @@ for my $case ( # is_deeply does not do nummify/stringify cmps properly # but we can always compare the ice ok( - ( nfreeze( is_plain_value $num ) eq nfreeze( [ $num ] ) ), + ( nfreeze( is_plain_value $num ) eq nfreeze( \$num ) ), "stringification without cmp capability detected on $case->{class}" ) || diag explain $case; } is ( - refaddr( ( is_plain_value($num)||[] )->[0] ), + refaddr( ${is_plain_value($num)} ), refaddr $num, "Same reference (blessed object) returned", ); @@ -178,7 +198,7 @@ lives_ok { cmp_ok(--$num, 'eq', 23, 'test overloaded object compares correctly'); is_deeply( is_plain_value $num, - [ 23 ], + \23, 'fallback stringification detected' ); cmp_ok(--$num, 'eq', 22, 'test overloaded object compares correctly'); @@ -188,7 +208,7 @@ lives_ok { is_deeply is_plain_value { -value => [] }, - [ [] ], + \[], '-value recognized' ; @@ -203,21 +223,21 @@ for ([], {}, \'') { for (undef, { -value => undef }) { is_deeply is_plain_value $_, - [ undef ], + \undef, 'NULL -value recognized' ; } is_deeply - is_literal_value { -ident => 'foo' }, - [ 'foo' ], - '-ident recognized as literal' + is_literal_value \'sql', + [ 'sql' ], + 'literal correctly recognized and unpacked' ; is_deeply is_literal_value \[ 'sql', 'bind1', [ {} => 'bind2' ] ], [ 'sql', 'bind1', [ {} => 'bind2' ] ], - 'literal correctly unpacked' + 'literal with binds correctly recognized and unpacked' ;