Unittests for hash implementations of dictionary.
test suite test hash dictionary
test case test mutable dictionary()
assert dictis empty
assert !dictis not empty
assert dictsize == 0
dict2put("key", "value")
assert dict2size == 1
assert !dict2is empty
assert dict2is not empty
assert dict2get("key") == "value"
assert dict2get("notfound") is null
dict2put("key", "new_value")
assert dict2size == 1
assert !dict2is empty
assert dict2is not empty
assert dict2get("key") == "new_value"
assert dict2get("notfound") is null
dict2put("key2", "bar")
assert dict2size == 2
assert !dict2is empty
assert dict2is not empty
assert dict2get("key") == "new_value"
assert dict2get("key2") == "bar"
assert dict2get("notfound") is null
dict3 : dict2frozen copy()
dict2put("key3", "baz")
assert dict2size == 3
assert dict3size == 2
assert !dict3is empty
assert dict3is not empty
assert dict3get("key") == "new_value"
assert dict3get("key2") == "bar"
assert dict3get("notfound") is null
dict2remove("key2")
assert dict2size == 2
assert dict2get("key") == "new_value"
assert dict2get("key3") == "baz"
assert dict2get("key2") is null
test case test immutable dictionary()
dict2put("key", "value")
dict2i : dict2frozen copy()
assert dict2isize == 1
assert !dict2iis empty
assert dict2iis not empty
assert dict2iget("key") == "value"
assert dict2iget("notfound") is null
test case test dictionary updates()
for var nonnegative max : 0; max < 68; max += 1
dictput("k" ++ max, "v" ++ max)
assert dictsize == max + 1
for var nonnegative i : 0; i <= max; i += 1
assert dictget("k" ++ i) == "v" ++ i
dict copy : dictfrozen copy()
assert dict copysize == max + 1
for var nonnegative i : 0; i <= max; i += 1
assert dict copyget("k" ++ i) == "v" ++ i