Changes in / [e428a36:80c0fc7]
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
t/variable.t
r5d8c9a7 r4953c44 17 17 BarnOwl::unset("-q", "intvar"); 18 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 19 22 20 BarnOwl::new_variable_bool("boolvar", { default => 1 }); … … 30 28 BarnOwl::unset("-q", "boolvar"); 31 29 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 30 35 31 BarnOwl::new_variable_string("strvar", { default => "monkey" }); … … 41 37 BarnOwl::unset("-q", "strvar"); 42 38 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 39 46 40 BarnOwl::new_variable_enum("enumvar", { validsettings => [qw/foo bar baz/], default => "bar" }); … … 52 46 BarnOwl::unset("-q", "enumvar"); 53 47 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 48 57 49 BarnOwl::new_variable_int("intvar2"); … … 68 60 BarnOwl::new_variable_full("fullvar", { 69 61 validsettings => '<short-words>', 70 get_tostring => sub { $value },62 get_tostring => sub { "value is " . $value }, 71 63 set_fromstring => sub { 72 73 $value = lc($_[0]);64 die "Too long" unless $_[0] =~ /^...?$/; 65 $value = $_[0]; 74 66 }, 75 67 takes_on_off => 1 76 68 }); 77 is(BarnOwl::getvar("fullvar"), " foo", "fullvar get");78 BarnOwl::set("-q", "fullvar", " Bar");79 is(BarnOwl::getvar("fullvar"), " bar", "fullvar set");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"); 80 72 BarnOwl::set("-q", "fullvar"); 81 is(BarnOwl::getvar("fullvar"), " on", "fullvar set2");73 is(BarnOwl::getvar("fullvar"), "value is on", "fullvar set2"); 82 74 BarnOwl::unset("-q", "fullvar"); 83 is(BarnOwl::getvar("fullvar"), " off", "fullvar unset");75 is(BarnOwl::getvar("fullvar"), "value is off", "fullvar unset"); 84 76 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"); 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"); 102 80 103 81 1; -
variable.c
r9d4dfdc r6a8b519 612 612 void owl_variable_dict_add_variable(owl_vardict * vardict, 613 613 owl_variable * var) { 614 char *oldvalue = NULL;615 owl_variable *oldvar = owl_variable_get_var(vardict, var->name);616 /* Save the old value as a string. */617 if (oldvar) {618 oldvalue = owl_variable_get_tostring(oldvar);619 }620 614 owl_dict_insert_element(vardict, var->name, var, (void (*)(void *))owl_variable_delete); 621 /* Restore the old value. */622 if (oldvalue) {623 owl_variable_set_fromstring(var, oldvalue, 0);624 g_free(oldvalue);625 }626 615 } 627 616 … … 788 777 g_free(v->default_str); 789 778 g_free(v->validsettings); 790 if (v->type != OWL_VARIABLE_OTHER) 791 g_value_unset(&(v->val)); 779 g_value_unset(&(v->val)); 792 780 g_closure_unref(v->get_tostring_fn); 793 781 g_closure_unref(v->set_fromstring_fn);
Note: See TracChangeset
for help on using the changeset viewer.