Files

71 lines
3.8 KiB
Plaintext

@pragma entry main
@pragma implicit off
@include "tap.inc";
function replace_key(&value)
{
value = "replaced";
}
function test_literal_keys()
{
@local map, key, i;
map[""] = "empty";
map["a\0b"] = "embedded nul";
map["01"] = "leading zero";
map["1"] = "one";
tap_ensure(map[""], "empty", @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(map["a\0b"], "embedded nul", @SCRIPTNAME, @SCRIPTLINE);
key = "a\0b";
tap_ensure(map[key], map["a\0b"], @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(map["01"], "leading zero", @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(map[1], "one", @SCRIPTNAME, @SCRIPTLINE);
map.outer["inner"].value = 10;
map["outer"].inner["value"] += 3;
tap_ensure(map.outer.inner.value, 13, @SCRIPTNAME, @SCRIPTLINE);
replace_key(map["outer"]["inner"]["value"]);
tap_ensure(map.outer.inner.value, "replaced", @SCRIPTNAME, @SCRIPTLINE);
map["left", "right"] = 42;
tap_ensure(map["left", "right"], 42, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(("left", "right") in map, @true, @SCRIPTNAME, @SCRIPTLINE);
delete map["a\0b"];
tap_ensure("a\0b" in map, @false, @SCRIPTNAME, @SCRIPTLINE);
for (i = 0; i < 10; i++)
{
map["counter"]++;
map["nested"]["counter"] = map["counter"];
}
tap_ensure(map.nested.counter, 10, @SCRIPTNAME, @SCRIPTLINE);
key = "";
for (i = 0; i < 800; i++) key = key %% "x";
map["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"] = "long key";
tap_ensure(map[key], "long key", @SCRIPTNAME, @SCRIPTLINE);
map[key] = "updated long key";
tap_ensure(map["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"], "updated long key", @SCRIPTNAME, @SCRIPTLINE);
}
function check_order(a, b, less, equal)
{
tap_ensure(a < b, less, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(a <= b, less || equal, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(a == b, equal, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(a != b, !equal, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(a >= b, !less, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure(a > b, !(less || equal), @SCRIPTNAME, @SCRIPTLINE);
}
function main()
{
test_literal_keys();
check_order(-100000, 100000, @true, @false);
check_order(100000, -100000, @false, @false);
check_order(0, 0, @false, @true);
check_order(-1, -1, @false, @true);
check_order(1, 1, @false, @true);
check_order(2147483647, -2147483647, @false, @false);
check_order(-2147483647, 0, @true, @false);
check_order(2147483647, 2147483647, @false, @true);
tap_end();
}