1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#!/usr/bin/perl
use strict;
use warnings;
use Test::Builder;
#
# Check if an enum property can be set
#
sub is_enum_ok {
# In Perl enums are like strings!
return is_string_ok(@_);
}
#
# Check if an string property can be set
#
sub is_string_ok {
my ($view, $property, $val1, $val2) = @_;
my $get = "get_$property";
my $set = "set_$property";
my $value = $view->$get();
my ($new_value) = ($value eq $val1 ? $val2 : $val1);
$view->$set($new_value);
my $tester = Test::Builder->new();
$tester->is_eq($view->$get(), $new_value, $property);
}
#
# Check if an int property can be set
#
sub is_int_ok {
my ($view, $property, $val1, $val2) = @_;
my $get = "get_$property";
my $set = "set_$property";
my $value = $view->$get();
my ($new_value) = ($value == $val1 ? $val2 : $val1);
$view->$set($new_value);
my $tester = Test::Builder->new();
$tester->is_num($view->$get(), $new_value, $property);
}
#
# Check if a boolean property can be set
#
sub is_boolean_ok {
my ($view, $property) = @_;
my $get = "get_$property";
my $set = "set_$property";
my $value = $view->$get();
$view->$set(! $value);
my $tester = Test::Builder->new();
$tester->is_eq($view->$get(), ! $value, $property);
}
1;
|