userver: /data/code/userver/libraries/proto-structs/codegen-tests/src/simple_test.cpp Source File
Loading...
Searching...
No Matches
simple_test.cpp
1#include <type_traits>
2
3#include <gtest/gtest.h>
4
5#include <simple/file1.structs.usrv.pb.hpp>
6
7namespace ss = simple::structs;
8
9USERVER_NAMESPACE_BEGIN
10
11TEST(SingleFile, SimpleStruct) {
12 static_assert(std::is_aggregate_v<ss::SimpleStruct>);
13 [[maybe_unused]] ss::SimpleStruct message;
14 message.some_integer = 5;
15 message.some_text = std::optional<std::string>("foo");
16 message.is_condition = true;
17 message.some_bytes = {"foo", "bar"};
18}
19
20TEST(SingleFile, NestedStruct) {
21 static_assert(std::is_aggregate_v<ss::SimpleStruct::NestedStruct>);
22 [[maybe_unused]] ss::SimpleStruct::NestedStruct nested;
23 nested.swag = "foo";
24
25 static_assert(std::is_aggregate_v<ss::SimpleStruct::NestedStruct::NestedStruct2>);
26 [[maybe_unused]] ss::SimpleStruct::NestedStruct::NestedStruct2 nested2;
27 nested2.swag2 = "bar";
28}
29
30TEST(SingleFile, InnerEnum1) {
31 static_assert(std::is_enum_v<ss::SimpleStruct::NestedStruct::NestedStruct2::InnerEnum1>);
32 [[maybe_unused]] const auto inner_enum1 = ss::SimpleStruct::NestedStruct::NestedStruct2::InnerEnum1::BAR_VAL;
33}
34
35TEST(SingleFile, InnerEnum2) {
36 static_assert(std::is_enum_v<ss::SimpleStruct::InnerEnum2>);
37 [[maybe_unused]] const auto inner_enum2 = ss::SimpleStruct::InnerEnum2::FOO_VAL;
38}
39
40TEST(SingleFile, SecondStruct) {
41 static_assert(std::is_aggregate_v<ss::SecondStruct>);
42 [[maybe_unused]] ss::SecondStruct message;
43}
44
45TEST(SingleFile, GlobalEnum) {
46 static_assert(std::is_enum_v<ss::GlobalEnum>);
47 [[maybe_unused]] ss::GlobalEnum message{};
48}
49
50TEST(Oneof, Empty) {
51 const ss::SimpleStruct::Something none;
52 EXPECT_FALSE(none);
53 EXPECT_FALSE(none.has_foo());
54 EXPECT_FALSE(none.has_bar());
55 EXPECT_THROW(none.foo(), std::bad_optional_access);
56 EXPECT_THROW(none.bar(), std::bad_optional_access);
57}
58
59TEST(Oneof, MakeFoo) {
60 ss::SimpleStruct::Something foo;
61 foo.set_foo(42);
62 EXPECT_TRUE(foo);
63 EXPECT_TRUE(foo.has_foo());
64 EXPECT_NO_THROW(EXPECT_EQ(foo.foo(), 42));
65 EXPECT_FALSE(foo.has_bar());
66 EXPECT_THROW(foo.bar(), std::bad_variant_access);
67}
68
69TEST(Oneof, MakeBar) {
70 ss::SimpleStruct::Something bar;
71 bar.set_bar("bar");
72 EXPECT_TRUE(bar);
73 EXPECT_FALSE(bar.has_foo());
74 EXPECT_THROW(bar.foo(), std::bad_variant_access);
75 EXPECT_TRUE(bar.has_bar());
76 EXPECT_NO_THROW(EXPECT_EQ(bar.bar(), "bar"));
77}
78
79TEST(Oneof, OneofInStruct) {
80 [[maybe_unused]] ss::SimpleStruct message;
81 message.something.set_bar("bar");
82 EXPECT_EQ(message.something.bar(), "bar");
83}
84
85USERVER_NAMESPACE_END