3#include <gtest/gtest.h>
5#include <maps/basic.pb.h>
6#include <maps/basic.structs.usrv.pb.hpp>
8#include <userver/proto-structs/convert.hpp>
10USERVER_NAMESPACE_BEGIN
12TEST(MapsBasic, FundamentalTypes) {
13 using Struct = maps::structs::Basic;
14 static_assert(std::is_same_v<
decltype(Struct::string_int), proto_structs::HashMap<std::string, std::int64_t>>);
15 static_assert(std::is_same_v<
decltype(Struct::string_string), proto_structs::HashMap<std::string, std::string>>);
16 static_assert(std::is_same_v<
decltype(Struct::int_int), proto_structs::HashMap<std::int64_t, std::int64_t>>);
17 static_assert(std::is_same_v<
decltype(Struct::int_string), proto_structs::HashMap<std::int64_t, std::string>>);
20 s.int_int = {{1, 2}, {3, 4}};
21 s.int_string = {{1,
"2"}, {3,
"4"}};
22 s.string_int = {{
"1", 2}, {
"3", 4}};
23 s.string_string = {{
"1",
"2"}, {
"3",
"4"}};
25 Struct::ProtobufMessage vanilla{};
26 proto_structs::StructToMessage(std::move(s), vanilla);
28 auto map = vanilla.int_int();
29 ASSERT_EQ(map.size(), 2u);
30 ASSERT_EQ(map.at(1), 2);
31 ASSERT_EQ(map.at(3), 4);
34 auto map = vanilla.int_string();
35 ASSERT_EQ(map.size(), 2u);
36 ASSERT_EQ(map.at(1),
"2");
37 ASSERT_EQ(map.at(3),
"4");
40 auto map = vanilla.string_int();
41 ASSERT_EQ(map.size(), 2u);
42 ASSERT_EQ(map.at(
"1"), 2);
43 ASSERT_EQ(map.at(
"3"), 4);
46 auto map = vanilla.string_string();
47 ASSERT_EQ(map.size(), 2u);
48 ASSERT_EQ(map.at(
"1"),
"2");
49 ASSERT_EQ(map.at(
"3"),
"4");