get_or_throw(map, key) returns references
[folly.git] / folly / test / MapUtilTest.cpp
index d31881b1dd2a76441f0037effd07c051a9b834ce..ee1e7b5bd2290b05c69dce7516f210c569656023 100644 (file)
@@ -42,6 +42,13 @@ TEST(MapUtil, get_or_throw) {
   m[1] = 2;
   EXPECT_EQ(2, get_or_throw(m, 1));
   EXPECT_THROW(get_or_throw(m, 2), std::out_of_range);
+  EXPECT_EQ(&m[1], &get_or_throw(m, 1));
+  get_or_throw(m, 1) = 3;
+  EXPECT_EQ(3, get_or_throw(m, 1));
+  const auto& cm = m;
+  EXPECT_EQ(&m[1], &get_or_throw(cm, 1));
+  EXPECT_EQ(3, get_or_throw(cm, 1));
+  EXPECT_THROW(get_or_throw(cm, 2), std::out_of_range);
 }
 
 TEST(MapUtil, get_or_throw_specified) {