diff options
author | Matt Derksen <v2cibmd@us.ibm.com> | 2016-05-16 16:36:51 -0500 |
---|---|---|
committer | Bill Hoffa <wghoffa@us.ibm.com> | 2016-06-02 09:23:44 -0500 |
commit | 5c59bb5b9c89a173c6771d4db84abb53f4615d93 (patch) | |
tree | 2f20a3174c612c227e1a3f781b8c351d97e9e5f3 /src/usr/testcore | |
parent | 6f5df0cc3724b5dd046e2dedc33036853289c840 (diff) | |
download | talos-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.H | 75 |
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 |