71 lines
3.8 KiB
Plaintext
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();
|
|
}
|