1 | #!/usr/bin/env perl |
---|
2 | use strict; |
---|
3 | use warnings; |
---|
4 | |
---|
5 | use Test::More qw(no_plan); |
---|
6 | |
---|
7 | use BarnOwl; |
---|
8 | |
---|
9 | # Test the basic variable types. |
---|
10 | |
---|
11 | BarnOwl::new_variable_int("intvar", { default => 7 }); |
---|
12 | is(BarnOwl::getvar("intvar"), "7", "intvar default"); |
---|
13 | BarnOwl::set("-q", "intvar", "24"); |
---|
14 | is(BarnOwl::getvar("intvar"), "24", "intvar set"); |
---|
15 | BarnOwl::set("-q", "intvar", "string"); |
---|
16 | is(BarnOwl::getvar("intvar"), "24", "intvar set bogus"); |
---|
17 | BarnOwl::unset("-q", "intvar"); |
---|
18 | is(BarnOwl::getvar("intvar"), "24", "intvar unset bogus"); |
---|
19 | BarnOwl::new_variable_int("intvar", { default => 7 }); |
---|
20 | isnt(BarnOwl::getvar("intvar"), "7", "intvar reinit shouldn't override preexisting value"); |
---|
21 | |
---|
22 | BarnOwl::new_variable_bool("boolvar", { default => 1 }); |
---|
23 | is(BarnOwl::getvar("boolvar"), "on", "boolvar default"); |
---|
24 | BarnOwl::set("-q", "boolvar", "off"); |
---|
25 | is(BarnOwl::getvar("boolvar"), "off", "boolvar set"); |
---|
26 | BarnOwl::set("-q", "boolvar", "bogus"); |
---|
27 | is(BarnOwl::getvar("boolvar"), "off", "boolvar set bogus"); |
---|
28 | BarnOwl::set("-q", "boolvar"); |
---|
29 | is(BarnOwl::getvar("boolvar"), "on", "boolvar set"); |
---|
30 | BarnOwl::unset("-q", "boolvar"); |
---|
31 | is(BarnOwl::getvar("boolvar"), "off", "boolvar unset"); |
---|
32 | BarnOwl::new_variable_bool("boolvar", { default => 1 }); |
---|
33 | isnt(BarnOwl::getvar("boolvar"), "on", "boolvar reinit shouldn't override preexisting value"); |
---|
34 | |
---|
35 | BarnOwl::new_variable_string("strvar", { default => "monkey" }); |
---|
36 | is(BarnOwl::getvar("strvar"), "monkey", "strvar default"); |
---|
37 | BarnOwl::set("-q", "strvar", "cuttlefish"); |
---|
38 | is(BarnOwl::getvar("strvar"), "cuttlefish", "strvar set"); |
---|
39 | BarnOwl::set("-q", "strvar"); |
---|
40 | is(BarnOwl::getvar("strvar"), "cuttlefish", "strvar set bogus"); |
---|
41 | BarnOwl::unset("-q", "strvar"); |
---|
42 | is(BarnOwl::getvar("strvar"), "cuttlefish", "strvar unset bogus"); |
---|
43 | BarnOwl::new_variable_string("strvar", { default => "monkey" }); |
---|
44 | isnt(BarnOwl::getvar("strvar"), "monkey", "strvar reinit shouldn't override value"); |
---|
45 | |
---|
46 | BarnOwl::new_variable_enum("enumvar", { validsettings => [qw/foo bar baz/], default => "bar" }); |
---|
47 | is(BarnOwl::getvar("enumvar"), "bar", "enumvar default"); |
---|
48 | BarnOwl::set("-q", "enumvar", "baz"); |
---|
49 | is(BarnOwl::getvar("enumvar"), "baz", "enumvar set"); |
---|
50 | BarnOwl::set("-q", "enumvar", "bogus"); |
---|
51 | is(BarnOwl::getvar("enumvar"), "baz", "boolvar set bogus"); |
---|
52 | BarnOwl::unset("-q", "enumvar"); |
---|
53 | is(BarnOwl::getvar("enumvar"), "baz", "enumvar unset bogus"); |
---|
54 | BarnOwl::new_variable_enum("enumvar", { validsettings => [qw/foo bar baz/], default => "bar" }); |
---|
55 | isnt(BarnOwl::getvar("enumvar"), "bar", "enumvar reinit shouldn't override value"); |
---|
56 | |
---|
57 | BarnOwl::new_variable_int("intvar2"); |
---|
58 | is(BarnOwl::getvar("intvar2"), "0", "intvar default default"); |
---|
59 | BarnOwl::new_variable_bool("boolvar2"); |
---|
60 | is(BarnOwl::getvar("boolvar2"), "off", "boolvar default default"); |
---|
61 | BarnOwl::new_variable_string("strvar2"); |
---|
62 | is(BarnOwl::getvar("strvar2"), "", "strvar default default"); |
---|
63 | BarnOwl::new_variable_enum("enumvar2", { validsettings => [qw/foo bar baz/] }); |
---|
64 | is(BarnOwl::getvar("enumvar2"), "foo", "enumvar default default"); |
---|
65 | |
---|
66 | # And test new_variable_full |
---|
67 | my $value = "foo"; |
---|
68 | BarnOwl::new_variable_full("fullvar", { |
---|
69 | validsettings => '<short-words>', |
---|
70 | get_tostring => sub { $value }, |
---|
71 | set_fromstring => sub { |
---|
72 | die "Too long" unless $_[0] =~ /^...?$/; |
---|
73 | $value = lc($_[0]); |
---|
74 | }, |
---|
75 | takes_on_off => 1 |
---|
76 | }); |
---|
77 | is(BarnOwl::getvar("fullvar"), "foo", "fullvar get"); |
---|
78 | BarnOwl::set("-q", "fullvar", "Bar"); |
---|
79 | is(BarnOwl::getvar("fullvar"), "bar", "fullvar set"); |
---|
80 | BarnOwl::set("-q", "fullvar"); |
---|
81 | is(BarnOwl::getvar("fullvar"), "on", "fullvar set2"); |
---|
82 | BarnOwl::unset("-q", "fullvar"); |
---|
83 | is(BarnOwl::getvar("fullvar"), "off", "fullvar unset"); |
---|
84 | BarnOwl::set("-q", "fullvar", "bogus"); |
---|
85 | is(BarnOwl::getvar("fullvar"), "off", "fullvar set bogus"); |
---|
86 | $value = "xyz"; |
---|
87 | is(BarnOwl::getvar("fullvar"), "xyz", "fullvar set out-of-band"); |
---|
88 | # Kinda verbose, but better to test all forms |
---|
89 | my $newvalue = "foo"; |
---|
90 | BarnOwl::new_variable_full("fullvar", { |
---|
91 | validsettings => '<short-words>', |
---|
92 | get_tostring => sub { $newvalue }, |
---|
93 | set_fromstring => sub { |
---|
94 | die "Too long" unless $_[0] =~ /^...?$/; |
---|
95 | $newvalue = lc($_[0]); |
---|
96 | }, |
---|
97 | takes_on_off => 1 |
---|
98 | }); |
---|
99 | is(BarnOwl::getvar("fullvar"), "xyz", "fullvar reinit doesn't override value"); |
---|
100 | $newvalue = "abc"; |
---|
101 | is(BarnOwl::getvar("fullvar"), "abc", "fullvar reinit changed setters"); |
---|
102 | |
---|
103 | 1; |
---|
104 | |
---|