| 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 | |
|---|
| 20 | BarnOwl::new_variable_bool("boolvar", { default => 1 }); |
|---|
| 21 | is(BarnOwl::getvar("boolvar"), "on", "boolvar default"); |
|---|
| 22 | BarnOwl::set("-q", "boolvar", "off"); |
|---|
| 23 | is(BarnOwl::getvar("boolvar"), "off", "boolvar set"); |
|---|
| 24 | BarnOwl::set("-q", "boolvar", "bogus"); |
|---|
| 25 | is(BarnOwl::getvar("boolvar"), "off", "boolvar set bogus"); |
|---|
| 26 | BarnOwl::set("-q", "boolvar"); |
|---|
| 27 | is(BarnOwl::getvar("boolvar"), "on", "boolvar set"); |
|---|
| 28 | BarnOwl::unset("-q", "boolvar"); |
|---|
| 29 | is(BarnOwl::getvar("boolvar"), "off", "boolvar unset"); |
|---|
| 30 | |
|---|
| 31 | BarnOwl::new_variable_string("strvar", { default => "monkey" }); |
|---|
| 32 | is(BarnOwl::getvar("strvar"), "monkey", "strvar default"); |
|---|
| 33 | BarnOwl::set("-q", "strvar", "cuttlefish"); |
|---|
| 34 | is(BarnOwl::getvar("strvar"), "cuttlefish", "strvar set"); |
|---|
| 35 | BarnOwl::set("-q", "strvar"); |
|---|
| 36 | is(BarnOwl::getvar("strvar"), "cuttlefish", "strvar set bogus"); |
|---|
| 37 | BarnOwl::unset("-q", "strvar"); |
|---|
| 38 | is(BarnOwl::getvar("strvar"), "cuttlefish", "strvar unset bogus"); |
|---|
| 39 | |
|---|
| 40 | BarnOwl::new_variable_enum("enumvar", { validsettings => [qw/foo bar baz/], default => "bar" }); |
|---|
| 41 | is(BarnOwl::getvar("enumvar"), "bar", "enumvar default"); |
|---|
| 42 | BarnOwl::set("-q", "enumvar", "baz"); |
|---|
| 43 | is(BarnOwl::getvar("enumvar"), "baz", "enumvar set"); |
|---|
| 44 | BarnOwl::set("-q", "enumvar", "bogus"); |
|---|
| 45 | is(BarnOwl::getvar("enumvar"), "baz", "boolvar set bogus"); |
|---|
| 46 | BarnOwl::unset("-q", "enumvar"); |
|---|
| 47 | is(BarnOwl::getvar("enumvar"), "baz", "enumvar unset bogus"); |
|---|
| 48 | |
|---|
| 49 | BarnOwl::new_variable_int("intvar2"); |
|---|
| 50 | is(BarnOwl::getvar("intvar2"), "0", "intvar default default"); |
|---|
| 51 | BarnOwl::new_variable_bool("boolvar2"); |
|---|
| 52 | is(BarnOwl::getvar("boolvar2"), "off", "boolvar default default"); |
|---|
| 53 | BarnOwl::new_variable_string("strvar2"); |
|---|
| 54 | is(BarnOwl::getvar("strvar2"), "", "strvar default default"); |
|---|
| 55 | BarnOwl::new_variable_enum("enumvar2", { validsettings => [qw/foo bar baz/] }); |
|---|
| 56 | is(BarnOwl::getvar("enumvar2"), "foo", "enumvar default default"); |
|---|
| 57 | |
|---|
| 58 | # And test new_variable_full |
|---|
| 59 | my $value = "foo"; |
|---|
| 60 | BarnOwl::new_variable_full("fullvar", { |
|---|
| 61 | validsettings => '<short-words>', |
|---|
| 62 | get_tostring => sub { "value is " . $value }, |
|---|
| 63 | set_fromstring => sub { |
|---|
| 64 | die "Too long" unless $_[0] =~ /^...?$/; |
|---|
| 65 | $value = $_[0]; |
|---|
| 66 | }, |
|---|
| 67 | takes_on_off => 1 |
|---|
| 68 | }); |
|---|
| 69 | is(BarnOwl::getvar("fullvar"), "value is foo", "fullvar get"); |
|---|
| 70 | BarnOwl::set("-q", "fullvar", "bar"); |
|---|
| 71 | is(BarnOwl::getvar("fullvar"), "value is bar", "fullvar set"); |
|---|
| 72 | BarnOwl::set("-q", "fullvar"); |
|---|
| 73 | is(BarnOwl::getvar("fullvar"), "value is on", "fullvar set2"); |
|---|
| 74 | BarnOwl::unset("-q", "fullvar"); |
|---|
| 75 | is(BarnOwl::getvar("fullvar"), "value is off", "fullvar unset"); |
|---|
| 76 | BarnOwl::set("-q", "fullvar", "bogus"); |
|---|
| 77 | is(BarnOwl::getvar("fullvar"), "value is off", "fullvar set bogus"); |
|---|
| 78 | $value = "something really long"; |
|---|
| 79 | is(BarnOwl::getvar("fullvar"), "value is something really long", "fullvar set out-of-band"); |
|---|
| 80 | |
|---|
| 81 | 1; |
|---|
| 82 | |
|---|