#include "StarOrderedMap.hpp" #include "gtest/gtest.h" using namespace Star; TEST(OrderedMap, Insert) { OrderedMap map; map.insert({3, 3}); map.insert({2, 2}); map.insert({1, 1}); { List comp = {3, 2, 1}; EXPECT_EQ(comp, map.keys()); } { List comp = {3, 2, 1}; List keys; for (auto i = map.begin(); i != map.end(); ++i) keys.append(i->first); EXPECT_EQ(comp, keys); } { List comp = {1, 2, 3}; List keys; for (auto i = map.rbegin(); i != map.rend(); ++i) keys.append(i->first); EXPECT_EQ(comp, keys); } } TEST(OrderedMap, Getters) { OrderedMap map; map[1] = 1; map[2] = 2; map[3] = 3; EXPECT_EQ(map.get(1), 1); EXPECT_EQ(map.get(2), 2); EXPECT_EQ(map.get(3), 3); EXPECT_EQ(map.ptr(3), &map.get(3)); } TEST(OrderedMap, ConstGetters) { OrderedHashMap const map{ {1, 1}, {2, 2}, {3, 3} }; EXPECT_EQ(map.get(1), 1); EXPECT_EQ(map.get(2), 2); EXPECT_EQ(map.get(3), 3); EXPECT_EQ(map.ptr(3), &map.get(3)); EXPECT_EQ(map.value(4, 4), 4); EXPECT_EQ(map.maybe(5), Maybe()); } TEST(OrderedMap, Sorting) { OrderedMap map{ {1, 5}, {3, 3}, {2, 4}, {5, 1}, {4, 2} }; EXPECT_EQ(map.keys(), List({1, 3, 2, 5, 4})); map.sortByKey(); EXPECT_EQ(map.keys(), List({1, 2, 3, 4, 5})); map.sortByValue(); EXPECT_EQ(map.keys(), List({5, 4, 3, 2, 1})); } TEST(OrderedMap, Removing) { OrderedHashMap map{ {5, 5}, {4, 4}, {3, 3}, {2, 2}, {1, 1} }; map.remove(3); map.remove(1); EXPECT_EQ(map.keys(), List({5, 4, 2})); }