blob: a8897395a0948e3393fb438e97c30a8cf5b2d86f [file] [log] [blame]
#include "internal/HeaderMap.h"
#include "internal/Config.h"
#include <gmock/gmock.h>
using namespace seasocks;
namespace {
void emplace(HeaderMap &map, const char *header, const char *value) {
#if HAVE_UNORDERED_MAP_EMPLACE
map.emplace(header, value);
#else
map.insert(std::make_pair(header, value));
#endif
}
TEST(HeaderMapTests, shouldConstruct) {
HeaderMap map;
EXPECT_TRUE(map.empty());
}
TEST(HeaderMapTests, shouldStoreAndRetrieve) {
HeaderMap map;
emplace(map, "Foo", "Bar");
EXPECT_EQ(1, map.size());
EXPECT_EQ("Bar", map.at("Foo"));
emplace(map, "Baz", "Moo");
EXPECT_EQ(2, map.size());
EXPECT_EQ("Bar", map.at("Foo"));
EXPECT_EQ("Moo", map.at("Baz"));
}
TEST(HeaderMapTests, shouldBeCaseInsensitive) {
HeaderMap map;
emplace(map, "Foo", "Bar");
EXPECT_EQ("Bar", map.at("FOO"));
EXPECT_EQ("Bar", map.at("foO"));
}
TEST(HeaderMapTests, shouldPreserveOriginalCase) {
HeaderMap map;
emplace(map, "Foo", "Bar");
auto it = map.find("Foo");
EXPECT_EQ("Foo", it->first);
}
}