static void testMapGetOrAdd() { HashMap<Uptr, Uptr> map; errorUnless(!map.get(0)); errorUnless(map.getOrAdd(0, 1) == 1); errorUnless(*map.get(0) == 1); errorUnless(map.getOrAdd(0, 3) == 1); errorUnless(*map.get(0) == 1); errorUnless((map.getOrAdd(0, 5) += 7) == 8); errorUnless(*map.get(0) == 8); }
static void testMapEmplace() { HashMap<Uptr, EmplacedValue> map; EmplacedValue& a = map.getOrAdd(0, "a", "b"); errorUnless(a.a == "a"); errorUnless(a.b == "b"); errorUnless(map.add(1, "c", "d")); const EmplacedValue& b = *map.get(1); errorUnless(b.a == "c"); errorUnless(b.b == "d"); EmplacedValue& c = map.set(2, "e", "f"); errorUnless(c.a == "e"); errorUnless(c.b == "f"); EmplacedValue& d = map.getOrAdd(2, "g", "h"); errorUnless(d.a == "e"); errorUnless(d.b == "f"); }