moonbitstack/moonstl/map does not have a README file
test {
let bimap : @map.BiMap[Int32, String] = @map.BiMap::new()
let _ = bimap.set(1, "a")
let _ = bimap.set(2, "b")
@test.assert_eq(bimap.get_key("b"), Some(2))
@test.assert_eq(bimap.set(1, "b"), Some((1, "a")))
@test.assert_eq(bimap.get(1), Some("b"))
@test.assert_eq(bimap.get(2), None)
}test {
let base : Map[String, Int32] = Map([])
base.set("a", 1)
let chain : @map.ChainMap[String, Int32] = @map.ChainMap::new([base])
@test.assert_eq(chain.get("a"), Some(1))
let child = chain.new_child()
child.set("a", 2)
@test.assert_eq(child.get("a"), Some(2))
@test.assert_eq(chain.get("a"), Some(1))
}test {
let counter : @map.Counter[String] = @map.Counter::new()
@test.assert_eq(counter.incr("a"), 1)
@test.assert_eq(counter.incr_by("a", 2), 3)
@test.assert_eq(counter.decr("a"), 2)
@test.assert_eq(counter.total(), 2L)
}test {
let map : @map.DefaultMap[String, Int32] = @map.DefaultMap::new(factory=key => {
key.length()
})
@test.assert_eq(map.get_or_init("abc"), 3)
@test.assert_eq(map.length(), 1)
@test.assert_eq(map.get("abc"), Some(3))
}impl Eq for DefaultMap[K, V]impl Show for DefaultMap[K, V]fn[K, V] DefaultMap::new(factory~ : (K) -> V, capacity? : Int, hash_seed? : Int) -> DefaultMap[K, V]test {
let map : @map.FlatMap[Int32, String] = @map.FlatMap::new()
let _ = map.set(2, "b")
let _ = map.set(1, "a")
@test.assert_eq(map.keys().to_array(), [1, 2])
@test.assert_eq(map.get(2), Some("b"))
@test.assert_eq(map.index_of(3), Err(2))
}test {
let map : @map.FlatMultiMap[Int32, String] = @map.FlatMultiMap::new()
map.insert(2, "b")
map.insert(1, "a")
map.insert(1, "c")
@test.assert_eq(map.get(1), ["a", "c"])
@test.assert_eq(map.length(), 3)
@test.assert_eq(map.key_count(), 2)
}impl Eq for FlatMultiMap[K, V]impl Show for FlatMultiMap[K, V]fn[K : Eq, V : Eq] FlatMultiMap::equal(self : FlatMultiMap[K, V], other : FlatMultiMap[K, V]) -> Boolfn[K : Compare + Eq, V : Compare + Eq] FlatMultiMap::insert(self : FlatMultiMap[K, V], key : K, value : V) -> Unitfn[K : Compare + Eq, V] FlatMultiMap::range(self : FlatMultiMap[K, V], start~ : K, end~ : K) -> Iter[(K, V)]fn[K : Compare + Eq, V : Compare + Eq] FlatMultiMap::remove_entry(self : FlatMultiMap[K, V], key : K, value : V) -> Booltest {
let set : @map.FlatSet[Int32] = @map.FlatSet::new()
@test.assert_eq(set.insert(3), true)
@test.assert_eq(set.insert(3), false)
@test.assert_eq(set.get_index(0), Some(3))
}test {
let map : @map.IndexMap[String, Int32] = @map.IndexMap::new()
let _ = map.set("a", 1)
let _ = map.set("b", 2)
@test.assert_eq(map.get_index_of("b"), Some(1))
@test.assert_eq(map.get_index(0), Some(("a", 1)))
let _ = map.swap_remove("a")
@test.assert_eq(map.get_index(0), Some(("b", 2)))
}test {
let set : @map.IndexSet[Int32] = @map.IndexSet::new()
@test.assert_eq(set.insert(7), (0, true))
@test.assert_eq(set.insert(7), (0, false))
@test.assert_eq(set.get_index(0), Some(7))
}test {
let map : @map.MultiMap[String, Int32] = @map.MultiMap::new()
map.insert("a", 1)
map.insert("a", 2)
@test.assert_eq(map.get("a"), [1, 2])
@test.assert_eq(map.length(), 2)
@test.assert_eq(map.key_count(), 1)
}test {
let tree : @map.RadixTree[Int32] = @map.RadixTree::new()
@test.assert_eq(tree.insert("car", 1), None)
@test.assert_eq(tree.insert("cart", 2), None)
@test.assert_eq(tree.insert("cat", 3), None)
@test.assert_eq(tree.get("cart"), Some(2))
@test.assert_eq(tree.get_ancestor_keys("cartoon"), ["car", "cart"])
@test.assert_eq(tree.prefix_count("ca"), 3)
}test {
let map : @map.RangeMap[Int32, String] = @map.RangeMap::new()
map.insert(start=0, end=10, "low")
map.insert(start=10, end=20, "high")
@test.assert_eq(map.get(5), Some("low"))
@test.assert_eq(map.get(10), Some("high"))
@test.assert_eq(map.get(20), None)
@test.assert_eq(map.length(), 2)
}test {
let set : @map.RangeSet[Int32] = @map.RangeSet::new()
set.insert(start=0, end=5)
set.insert(start=5, end=9)
@test.assert_eq(set.contains(7), true)
@test.assert_eq(set.contains(9), false)
@test.assert_eq(set.length(), 1)
}test {
let map : @map.SortedMultiMap[Int32, String] = @map.SortedMultiMap::new()
map.insert(2, "b")
map.insert(1, "a")
map.insert(1, "b")
@test.assert_eq(map.first(), Some((1, "a")))
@test.assert_eq(map.get(1), ["a", "b"])
}impl Eq for SortedMultiMap[K, V]impl Show for SortedMultiMap[K, V]fn[K : Eq, V : Eq] SortedMultiMap::equal(self : SortedMultiMap[K, V], other : SortedMultiMap[K, V]) -> Boolfn[K : Compare + Eq, V : Compare + Eq] SortedMultiMap::insert(self : SortedMultiMap[K, V], key : K, value : V) -> Unitfn[K : Eq, V : Eq] SortedMultiMap::not_equal(x : SortedMultiMap[K, V], y : SortedMultiMap[K, V]) -> Boolfn[K : Show, V : Show] SortedMultiMap::output(self : SortedMultiMap[K, V], logger : &Logger) -> Unitfn[K : Compare + Eq, V] SortedMultiMap::range(self : SortedMultiMap[K, V], start~ : K, end~ : K) -> Iter[(K, V)]test {
let trie : @map.Trie[Int32] = @map.Trie::new()
@test.assert_eq(trie.insert("car", 1), None)
@test.assert_eq(trie.insert("cart", 2), None)
@test.assert_eq(trie.get("car"), Some(1))
@test.assert_eq(trie.keys_with_prefix("ca"), ["car", "cart"])
@test.assert_eq(trie.longest_prefix("cartoon"), Some(("cart", 2)))
}Install
Download zipData structures and algorithms the MoonBit core library leaves out.