--- e.t 19 Aug 2008 09:04:49 +1000 1.3 +++ e.t 23 Aug 2008 11:16:01 +1000 @@ -4,7 +4,7 @@ # use strict; use Glib ':constants'; -use Test::More tests => 232; +use Test::More tests => 279; # first register some types with which to play below. @@ -60,6 +60,11 @@ TRUE, 'readable'); pspec_common_ok ($pspec, 'Boolean', 'readable'); ok ($pspec->get_default_value, "Boolean default (expect TRUE)"); +is ($pspec->values_cmp(0,1), -1); +is ($pspec->values_cmp(1,0), 1); +is ($pspec->values_cmp(1,1), 0); +is ($pspec->values_cmp(123,456), 0); +is ($pspec->values_cmp('',''), 0); push @params, $pspec; @@ -82,6 +87,9 @@ is ($pspec->get_minimum, $min, "$nick min"); is ($pspec->get_maximum, $max, "$nick max"); is ($pspec->get_default_value, $default, "$nick default"); + is ($pspec->values_cmp(22,33), -1); + is ($pspec->values_cmp(33,22), 1); + is ($pspec->values_cmp(22,22), 0); push @params, $pspec; } @@ -102,6 +110,12 @@ is_float ($pspec->get_maximum, $max, "$nick maximum"); is_float ($pspec->get_default_value, $default, "$nick default"); ok ($pspec->get_epsilon > 0.0, "$nick epsilon"); + is ($pspec->values_cmp(22,33), -1); + is ($pspec->values_cmp(33,22), 1); + is ($pspec->values_cmp(22,22), 0); + is ($pspec->values_cmp(0, $pspec->get_epsilon / 2), 0); + is ($pspec->values_cmp($pspec->get_epsilon / 4, + - $pspec->get_epsilon / 4), 0); push @params, $pspec; } @@ -116,6 +130,10 @@ pspec_common_ok ($pspec, 'Enum', G_PARAM_READWRITE, 'Fish'); is ($pspec->get_enum_class, 'Fish', 'enum class'); is ($pspec->get_default_value, 'blue', "Enum default"); +is ($pspec->values_cmp('one','two'), -1); +is ($pspec->values_cmp('red','blue'), -1); +is ($pspec->values_cmp('blue','one'), 1); +is ($pspec->values_cmp('red','red'), 0); push @params, $pspec; @@ -125,6 +143,9 @@ pspec_common_ok ($pspec, 'Flags', G_PARAM_READWRITE, 'Rain'); is ($pspec->get_flags_class, 'Rain', 'flags class'); ok ($pspec->get_default_value == ['light', 'warm'], 'Flags default'); +is ($pspec->values_cmp('warm','cold'), -1); +is ($pspec->values_cmp(['cold','light'],['light']), 1); +is ($pspec->values_cmp(['heavy'],'heavy'), 0); push @params, $pspec; @@ -133,6 +154,10 @@ # we only know one boxed type at this point. 'Glib::Scalar', G_PARAM_READWRITE); pspec_common_ok ($pspec, 'Boxed', G_PARAM_READWRITE, 'Glib::Scalar'); +{ # 1 or -1 depending on address, which is unpredictable, so just test !=0 + ok ($pspec->values_cmp('foo','bar') != 0); + # almost no Glib::Scalar has an equal address, so no tests for ==0 here +} push @params, $pspec; @@ -140,6 +165,7 @@ 'I object, Your Honor, that\'s pure conjecture!', 'Skeezle', G_PARAM_READWRITE); pspec_common_ok ($pspec, 'Object', G_PARAM_READWRITE, 'Skeezle'); +is ($pspec->values_cmp(undef,undef), 0); push @params, $pspec; @@ -155,6 +181,8 @@ ok ($pspec->get_flags == G_PARAM_READWRITE, 'Param flags'); is ($pspec->get_value_type, 'Glib::Param::Enum', 'Param value type'); ok (! $pspec->get_owner_type, 'Param owner type'); +is ($pspec->values_cmp($pspec,$pspec), 0); +ok ($pspec->values_cmp($pspec,$params[0]) != 0); push @params, $pspec; @@ -163,6 +191,9 @@ 'ö', qw/readable/); pspec_common_ok ($pspec, 'Unichar', qw/readable/, 'Glib::UInt'); is ($pspec->get_default_value, 'ö', 'Unichar default'); +is ($pspec->values_cmp(65,66), -1); +is ($pspec->values_cmp(66,65), 1); +is ($pspec->values_cmp(66,66), 0); push @params, $pspec;