]> git.tdb.fi Git - libs/core.git/blob - tests/maputils.cpp
Move non-oneliner functions out of RefPtr class declaration
[libs/core.git] / tests / maputils.cpp
1 #include <map>
2 #include <msp/core/maputils.h>
3 #include <msp/test/test.h>
4
5 using namespace std;
6 using namespace Msp;
7
8 class MapUtilTests: public Test::RegisteredTest<MapUtilTests>
9 {
10 public:
11         MapUtilTests();
12
13         static const char *get_name() { return "maputils"; }
14
15 private:
16         void get_item();
17         void insert_unique();
18         void nonexistent_item();
19         void key_collision();
20         void uncastable_key();
21 };
22
23
24 MapUtilTests::MapUtilTests()
25 {
26         add(&MapUtilTests::get_item, "get_item");
27         add(&MapUtilTests::insert_unique, "insert_unique");
28         add(&MapUtilTests::nonexistent_item, "nonexistent item").expect_throw<key_error>();
29         add(&MapUtilTests::key_collision, "key collision").expect_throw<key_error>();
30         add(&MapUtilTests::uncastable_key, "uncastable key").expect_throw<key_error>();
31 }
32
33 void MapUtilTests::get_item()
34 {
35         map<int, string> m;
36         m[1] = "foo";
37         m[3] = "bar";
38         EXPECT_EQUAL(::get_item(m, 1), "foo");
39         EXPECT_EQUAL(::get_item(m, 3), "bar");
40 }
41
42 void MapUtilTests::insert_unique()
43 {
44         map<int, string> m;
45         ::insert_unique(m, 1, "foo");
46         ::insert_unique(m, 3, "bar");
47         EXPECT_EQUAL(m.count(1), 1);
48         EXPECT_EQUAL(m.count(3), 1);
49 }
50
51 void MapUtilTests::nonexistent_item()
52 {
53         map<int, string> m;
54         ::get_item(m, 0);
55 }
56
57 void MapUtilTests::key_collision()
58 {
59         map<int, string> m;
60         ::insert_unique(m, 1, "foo");
61         ::insert_unique(m, 1, "bar");
62 }
63
64 void MapUtilTests::uncastable_key()
65 {
66         map<pair<int, int>, string> m;
67         ::get_item(m, make_pair(0, 0));
68 }