diff --git a/lib/Facebook/OpenGraph/Response.pm b/lib/Facebook/OpenGraph/Response.pm index 4a584b0..e50f5a9 100644 --- a/lib/Facebook/OpenGraph/Response.pm +++ b/lib/Facebook/OpenGraph/Response.pm @@ -40,20 +40,26 @@ sub is_api_version_eq_or_later_than { my ($self, $comparing_version) = @_; croak 'comparing version is not given.' unless $comparing_version; - (my $decimal_comparing_version = $comparing_version) =~ s/\A v //x; - (my $decimal_response_version = $self->api_version) =~ s/\A v //x; + (my $comp_major, my $comp_minor) + = $comparing_version =~ m/ (\d+) \. (\d+ )/x; - return ($decimal_comparing_version + 0) <= ($decimal_response_version + 0); + (my $response_major, my $response_minor) + = $self->api_version =~ m/ (\d+) \. (\d+ )/x; + + return $comp_major <= $response_major && $comp_minor <= $response_minor; } sub is_api_version_eq_or_older_than { my ($self, $comparing_version) = @_; croak 'comparing version is not given.' unless $comparing_version; - (my $decimal_comparing_version = $comparing_version) =~ s/\A v //x; - (my $decimal_response_version = $self->api_version) =~ s/\A v //x; + (my $comp_major, my $comp_minor) + = $comparing_version =~ m/ (\d+) \. (\d+ )/x; + + (my $response_major, my $response_minor) + = $self->api_version =~ m/ (\d+) \. (\d+ )/x; - return ($decimal_comparing_version + 0) >= ($decimal_response_version + 0); + return $response_major <= $comp_major && $response_minor <= $comp_minor; } sub header { diff --git a/t/004_response/01_basic.t b/t/004_response/01_basic.t index cbb6786..208e06f 100644 --- a/t/004_response/01_basic.t +++ b/t/004_response/01_basic.t @@ -86,8 +86,13 @@ subtest 'is_api_version_eq_or_older_than' => sub { content => $content, }); + ok(!$res->is_api_version_eq_or_older_than('v1.3')); + ok(!$res->is_api_version_eq_or_older_than('v1.4')); ok($res->is_api_version_eq_or_older_than('v2.3')); ok($res->is_api_version_eq_or_older_than('v2.4')); + ok($res->is_api_version_eq_or_older_than('v2.10')); + ok($res->is_api_version_eq_or_older_than('v3.3')); + ok($res->is_api_version_eq_or_older_than('v3.4')); }; subtest 'is_api_version_eq_or_later_than' => sub { @@ -112,8 +117,13 @@ subtest 'is_api_version_eq_or_later_than' => sub { content => $content, }); - ok($res->is_api_version_eq_or_later_than('v2.3')); + ok($res->is_api_version_eq_or_later_than('v1.2')); + ok($res->is_api_version_eq_or_later_than('v1.3')); ok($res->is_api_version_eq_or_later_than('v2.2')); + ok($res->is_api_version_eq_or_later_than('v2.3')); + ok(!$res->is_api_version_eq_or_later_than('v2.10')); + ok(!$res->is_api_version_eq_or_later_than('v3.2')); + ok(!$res->is_api_version_eq_or_later_than('v3.3')); }; done_testing;