userver: /data/code/userver/libraries/proto-structs/codegen-tests/src/maps/basic_test.cpp Source File
Loading...
Searching...
No Matches
basic_test.cpp
1#include <type_traits>
2
3#include <gtest/gtest.h>
4
5#include <maps/basic.pb.h>
6#include <maps/basic.structs.usrv.pb.hpp>
7
8#include <userver/proto-structs/convert.hpp>
9
10USERVER_NAMESPACE_BEGIN
11
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>>);
18
19 Struct s{};
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"}};
24
25 Struct::ProtobufMessage vanilla{};
26 proto_structs::StructToMessage(std::move(s), vanilla);
27 {
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);
32 }
33 {
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");
38 }
39 {
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);
44 }
45 {
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");
50 }
51}
52
53USERVER_NAMESPACE_END