Unittests for hash implementations of dictionary.
test suite test hash dictionary
test case test mutable dictionary()
assert dict • is empty
assert !dict • is not empty
assert dict • size == 0
dict2 • put("key", "value")
assert dict2 • size == 1
assert !dict2 • is empty
assert dict2 • is not empty
assert dict2 • get("key") == "value"
assert dict2 • get("notfound") is null
dict2 • put("key", "new_value")
assert dict2 • size == 1
assert !dict2 • is empty
assert dict2 • is not empty
assert dict2 • get("key") == "new_value"
assert dict2 • get("notfound") is null
dict2 • put("key2", "bar")
assert dict2 • size == 2
assert !dict2 • is empty
assert dict2 • is not empty
assert dict2 • get("key") == "new_value"
assert dict2 • get("key2") == "bar"
assert dict2 • get("notfound") is null
dict3 : dict2 • frozen copy()
dict2 • put("key3", "baz")
assert dict2 • size == 3
assert dict3 • size == 2
assert !dict3 • is empty
assert dict3 • is not empty
assert dict3 • get("key") == "new_value"
assert dict3 • get("key2") == "bar"
assert dict3 • get("notfound") is null
dict2 • remove("key2")
assert dict2 • size == 2
assert dict2 • get("key") == "new_value"
assert dict2 • get("key3") == "baz"
assert dict2 • get("key2") is null
test case test immutable dictionary()
dict2 • put("key", "value")
dict2i : dict2 • frozen copy()
assert dict2i • size == 1
assert !dict2i • is empty
assert dict2i • is not empty
assert dict2i • get("key") == "value"
assert dict2i • get("notfound") is null
test case test dictionary updates()
for var nonnegative max : 0; max < 68; max += 1
dict • put("k" ++ max, "v" ++ max)
assert dict • size == max + 1
for var nonnegative i : 0; i <= max; i += 1
assert dict • get("k" ++ i) == "v" ++ i
dict copy : dict • frozen copy()
assert dict copy • size == max + 1
for var nonnegative i : 0; i <= max; i += 1
assert dict copy • get("k" ++ i) == "v" ++ i