196 lines
6.3 KiB
Text
196 lines
6.3 KiB
Text
|
#-------------------------------------------------------------------------------
|
||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||
|
#-------------------------------------------------------------------------------
|
||
|
# std.nut - Nasal Unit Test for std.nas
|
||
|
# author: Henning Stahlke
|
||
|
# created: 06/2020
|
||
|
#-------------------------------------------------------------------------------
|
||
|
|
||
|
var setUp = func {
|
||
|
};
|
||
|
|
||
|
var tearDown = func {
|
||
|
};
|
||
|
|
||
|
#-- test std.Hash
|
||
|
var test_hash = func {
|
||
|
var hash = std.Hash.new({}, "testhash");
|
||
|
unitTest.assert(isa(hash, std.Hash), "std.Hash.new");
|
||
|
unitTest.assert(hash.getName() == "testhash" , "std.Hash.getName");
|
||
|
|
||
|
unitTest.assert(hash.set("foo", 42) == hash, "std.Hash.set");
|
||
|
unitTest.assert(hash.get("foo") == 42 , "std.Hash.get");
|
||
|
unitTest.assert(hash.contains("foo"), "std.Hash.contains");
|
||
|
|
||
|
hash.set("bar", 21);
|
||
|
unitTest.assert(isvec(hash.getKeys()), "std.Hash.getKeys isvec");
|
||
|
unitTest.assert(size(hash.getKeys()) == 2, "std.Hash.getKeys size");
|
||
|
|
||
|
unitTest.assert(hash.clear() == hash, "std.Hash.clear");
|
||
|
unitTest.assert(!hash.contains("foo"), "std.Hash.contains after clear");
|
||
|
unitTest.assert(size(hash.getKeys()) == 0, "std.Hash.getKeys after clear");
|
||
|
|
||
|
var cb_hash = {};
|
||
|
unitTest.assert(hash.addCallback(func(key, val) { cb_hash[key] = val; }) == hash,
|
||
|
"std.Hash.addCallback");
|
||
|
hash.set("foo", 21);
|
||
|
unitTest.assert(cb_hash["foo"] == 21, "std.addCallback worked");
|
||
|
|
||
|
hash.set("funct", func {});
|
||
|
hash.set("vec", [0,1,2]);
|
||
|
hash.set("hsh", {a:1, b:2});
|
||
|
|
||
|
var tmp = props.Node.new();
|
||
|
hash.keys2props(tmp);
|
||
|
unitTest.assert(isa(tmp.getNode("foo"), props.Node), "std.keys2props node ok");
|
||
|
|
||
|
var tmp = props.Node.new();
|
||
|
hash.hash2props(tmp);
|
||
|
unitTest.assert(tmp.getNode("foo").getValue() == 21, "std.hash2props ok");
|
||
|
}
|
||
|
|
||
|
#-- test std.String
|
||
|
var test_stoul = func {
|
||
|
unitTest.assert(std.stoul("123") == 123, "std.stoul 123");
|
||
|
unitTest.assert(std.stoul("A0", 16) == 160, "std.stoul 0xAF");
|
||
|
}
|
||
|
|
||
|
var test_string = func {
|
||
|
var x = std.String.new("FlightGear");
|
||
|
unitTest.assert(isa(x, std.String), "std.String.new");
|
||
|
unitTest.assert(x.compare("FlightGear"), "std.String.compare");
|
||
|
|
||
|
unitTest.assert(x.starts_with("Fli"), "std.String.starts_with");
|
||
|
unitTest.assert(!x.starts_with("Gear"), "std.String.starts_with");
|
||
|
|
||
|
unitTest.assert(x.find_first_of("i") == 2, "std.String.find_first_of");
|
||
|
unitTest.assert(x.find_first_of("i", 3) == -1, "std.String.find_first_of");
|
||
|
unitTest.assert(x.find_first_not_of("F") == 1, "std.String.find_first_not_of");
|
||
|
unitTest.assert(x.find_first_not_of("F", 2) == 2, "std.String.find_first_not_of");
|
||
|
unitTest.assert(x.find_first_not_of("F", 3) == 3, "std.String.find_first_not_of");
|
||
|
}
|
||
|
|
||
|
#-- test std.Vector
|
||
|
var test_vector = func {
|
||
|
var x = std.Vector.new();
|
||
|
unitTest.assert(isa(x, std.Vector), "std.Vector.new()");
|
||
|
unitTest.assert(x.size() == 0);
|
||
|
|
||
|
x = std.Vector.new(["x", "y"]);
|
||
|
unitTest.assert_equal(x.vector, ["x", "y"], "std.Vector.new(['x', 'y'])");
|
||
|
unitTest.assert(x.size() == 2, "std.Vector.new size 2");
|
||
|
x.clear();
|
||
|
unitTest.assert(isvec(x.vector) and x.size() == 0);
|
||
|
|
||
|
x = std.Vector.new([], "testvector");
|
||
|
var cb_vector = [];
|
||
|
unitTest.assert(x.getName() == "testvector" , "std.Vector.getName");
|
||
|
unitTest.assert(x.addCallback(func (index, item) {
|
||
|
if (index >= size(cb_vector)) append(cb_vector, item);
|
||
|
else cb_vector = cb_vector[0:index]~[item]~subvec(cb_vector, index);
|
||
|
}) == x, "std.Vector.addCallback");
|
||
|
|
||
|
# append():
|
||
|
x.append("a");
|
||
|
x.append("b");
|
||
|
x.append("c");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "c"]);
|
||
|
unitTest.assert_equal(cb_vector, ["a", "b", "c"]);
|
||
|
unitTest.assert(x.size() == 3);
|
||
|
|
||
|
# extend():
|
||
|
x.extend(["d", "e"]);
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "c", "d", "e"]);
|
||
|
unitTest.assert(x.size() == 5);
|
||
|
|
||
|
# insert():
|
||
|
x.insert(2, "cc");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "cc", "c", "d", "e"]);
|
||
|
unitTest.assert(x.size() == 6);
|
||
|
|
||
|
# pop():
|
||
|
unitTest.assert(x.pop(3), "c");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "cc", "d", "e"]);
|
||
|
unitTest.assert(x.size() == 5);
|
||
|
|
||
|
unitTest.assert(x.pop(), "e");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "cc", "d"]);
|
||
|
unitTest.assert(x.size() == 4);
|
||
|
|
||
|
|
||
|
# extend():
|
||
|
x.clear();
|
||
|
x.extend(["a", "b", "c", "d"]);
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "c", "d"]);
|
||
|
unitTest.assert(x.size() == 4);
|
||
|
|
||
|
# index():
|
||
|
unitTest.assert(x.index("c"), 2);
|
||
|
|
||
|
# contains():
|
||
|
unitTest.assert(x.contains("c"));
|
||
|
unitTest.assert(x.contains("e") == 0);
|
||
|
|
||
|
# remove():
|
||
|
x.remove("c");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "d"]);
|
||
|
unitTest.assert(x.size() == 3);
|
||
|
|
||
|
# insert():
|
||
|
x.insert(0, "f");
|
||
|
unitTest.assert_equal(x.vector, ["f", "a", "b", "d"]);
|
||
|
unitTest.assert(x.size() == 4);
|
||
|
x.remove("f");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "d"]);
|
||
|
|
||
|
x.insert(1, "f");
|
||
|
unitTest.assert_equal(x.vector, ["a", "f", "b", "d"]);
|
||
|
unitTest.assert(x.size() == 4);
|
||
|
x.remove("f");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "d"]);
|
||
|
|
||
|
x.insert(2, "f");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "f", "d"]);
|
||
|
x.remove("f");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "d"]);
|
||
|
|
||
|
x.insert(3, "g");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "d", "g"]);
|
||
|
x.remove("g");
|
||
|
|
||
|
x.insert(4, "g");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "d", "g"]);
|
||
|
x.remove("g");
|
||
|
|
||
|
x.insert(-1, "h");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "h", "d"]);
|
||
|
x.remove("h");
|
||
|
|
||
|
x.insert(-2, "h");
|
||
|
unitTest.assert_equal(x.vector, ["a", "h", "b", "d"]);
|
||
|
x.remove("h");
|
||
|
|
||
|
x.insert(-3, "h");
|
||
|
unitTest.assert_equal(x.vector, ["h", "a", "b", "d"]);
|
||
|
x.remove("h");
|
||
|
|
||
|
x.insert(-4, "h");
|
||
|
unitTest.assert_equal(x.vector, ["h", "a", "b", "d"]);
|
||
|
x.remove("h");
|
||
|
|
||
|
# pop():
|
||
|
unitTest.assert(x.pop(-1) == "d");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b"]);
|
||
|
x.append("d");
|
||
|
|
||
|
unitTest.assert(x.pop(-2) == "b");
|
||
|
unitTest.assert_equal(x.vector, ["a", "d"]);
|
||
|
x.insert(1, "b");
|
||
|
|
||
|
unitTest.assert(x.pop(-3) == "a");
|
||
|
unitTest.assert_equal(x.vector, ["b", "d"]);
|
||
|
x.insert(0, "a");
|
||
|
unitTest.assert_equal(x.vector, ["a", "b", "d"]);
|
||
|
}
|
||
|
|