1#!perl 2 3use Test::More tests => 9; 4use XS::APItest; 5 6my $four = 4; 7ok sv_numeq($four, 4), '$four == 4'; 8ok !sv_numeq($four, 5), '$four != 5'; 9 10my $six_point_five = 6.5; # an exact float, so == is fine 11ok sv_numeq($six_point_five, 6.5), '$six_point_five == 6.5'; 12ok !sv_numeq($six_point_five, 6.6), '$six_point_five == 6.6'; 13 14# GMAGIC 15"10" =~ m/(\d+)/; 16ok !sv_numeq_flags($1, 10, 0), 'sv_numeq_flags with no flags does not GETMAGIC'; 17ok sv_numeq_flags($1, 10, SV_GMAGIC), 'sv_numeq_flags with SV_GMAGIC does'; 18 19# overloading 20{ 21 package AlwaysTen { 22 use overload 23 '==' => sub { return $_[1] == 10 }, 24 '0+' => sub { 123456 }; 25 } 26 my $obj = bless([], "AlwaysTen"); 27 28 ok sv_numeq($obj, 10), 'AlwaysTen is 10'; 29 ok !sv_numeq($obj, 11), 'AlwaysTen is not 11'; 30 31 ok !sv_numeq_flags($obj, 10, SV_SKIP_OVERLOAD), 'AlwaysTen is not 10 with SV_SKIP_OVERLOAD' 32} 33