summaryrefslogtreecommitdiffstats
path: root/src/usr/testcore
diff options
context:
space:
mode:
authorMatt Derksen <v2cibmd@us.ibm.com>2016-05-16 16:36:51 -0500
committerBill Hoffa <wghoffa@us.ibm.com>2016-06-02 09:23:44 -0500
commit5c59bb5b9c89a173c6771d4db84abb53f4615d93 (patch)
tree2f20a3174c612c227e1a3f781b8c351d97e9e5f3 /src/usr/testcore
parent6f5df0cc3724b5dd046e2dedc33036853289c840 (diff)
downloadtalos-hostboot-5c59bb5b9c89a173c6771d4db84abb53f4615d93.tar.gz
talos-hostboot-5c59bb5b9c89a173c6771d4db84abb53f4615d93.zip
Implement std::map::emplace()
Change-Id: Id3f42ac3e5edf6c65c420e60ac69d649cbaa1ed0 RTC:153697 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24631 Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: A. P. Williams III <iawillia@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/testcore')
-rw-r--r--src/usr/testcore/lib/stltest.H75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/usr/testcore/lib/stltest.H b/src/usr/testcore/lib/stltest.H
index c75802ede..d5133c3e2 100644
--- a/src/usr/testcore/lib/stltest.H
+++ b/src/usr/testcore/lib/stltest.H
@@ -482,5 +482,80 @@ class STLTest : public CxxTest::TestSuite
std::list< std::list<int> > l = { {},{1},{1,2,3} };
}
+ void testEmplace()
+ {
+ std::map<int, char> m;
+
+ // uses pair's move constructor
+ m.emplace(std::make_pair(1, 'c'));
+ if (m.size() != 1)
+ {
+ TS_FAIL("testEmplace(): Expected map size 1, found size %d", m.size());
+ }
+
+ // add another pair
+ m.emplace(std::make_pair(2, 'a'));
+ if (m.size() != 2)
+ {
+ TS_FAIL("testEmplace(): Expected map size 2, found size %d", m.size());
+ }
+
+ // 3.1 -> 3
+ // 65 = ascii 'A'
+ m.emplace(std::make_pair(3.1, 65));
+ if (m.size() != 3)
+ {
+ TS_FAIL("testEmplace(): Expected map size 3, found size %d", m.size());
+ }
+
+ m.emplace(4, 'W');
+ if (m.size() != 4)
+ {
+ TS_FAIL("testEmplace(): Expected map size 4, found size %d", m.size());
+ }
+
+ for (const auto &p : m) {
+ if (p.first == 1)
+ {
+ if (p.second != 'c')
+ {
+ TS_FAIL("Expected {1 => c} pair");
+ }
+ }
+ else if (p.first == 2)
+ {
+ if (p.second != 'a')
+ {
+ TS_FAIL("Expected {2 => a} pair");
+ }
+ }
+ else if (p.first == 3)
+ {
+ if (p.second != 'A')
+ {
+ TS_FAIL("Unexpected pair {%d => %c}", p.first, p.second);
+ }
+ }
+ else if (p.first == 4)
+ {
+ if (p.second != 'W')
+ {
+ TS_FAIL("Unexpected pair {%d => %c}", p.first, p.second);
+ }
+ }
+ }
+
+ std::map<int, int> mi;
+ for (size_t i = 0; i < 10; ++i)
+ if (!mi.emplace(i,i).second)
+ {
+ TS_FAIL("Emplace did not insert %d", i);
+ }
+ if (mi.emplace(5,100).second)
+ {
+ TS_FAIL("Emplace did an insert of an already existing key");
+ }
+ }
+
};
#endif
OpenPOWER on IntegriCloud