userver: /data/code/userver/libraries/proto-structs/codegen-tests/src/box/autobox/dependency_on_nested_test.cpp Source File
Loading...
Searching...
No Matches
dependency_on_nested_test.cpp
1#include <gtest/gtest.h>
2
3#include <vector>
4
5#include <userver/utils/box.hpp>
6
7#include <box/autobox/dependency_on_nested.structs.usrv.pb.hpp>
8#include <test_utils/type_assertions.hpp>
9
10USERVER_NAMESPACE_BEGIN
11
12TEST(BoxDependencyOnNested, NonCyclic) {
13 using Scope = box::autobox::structs::DependencyOnNested;
14 AssertFieldCount<Scope::Foo, 1>();
15 AssertFieldType<decltype(Scope::Foo::field), Scope::Bar::Nested>();
16}
17
18TEST(BoxDependencyOnNested, NonCyclicDoublyNested) {
19 using Scope = box::autobox::structs::DependencyOnNestedNested;
20 AssertFieldCount<Scope::Foo, 1>();
21 AssertFieldType<decltype(Scope::Foo::field), Scope::Bar::Nested::Nested2>();
22}
23
24TEST(BoxDependencyOnNested, RepeatedNonCyclic) {
25 using Scope = box::autobox::structs::RepeatedDependencyOnNested;
26 AssertFieldCount<Scope::Foo, 1>();
27 AssertFieldType<decltype(Scope::Foo::field), std::vector<Scope::Bar::Nested>>();
28}
29
30TEST(BoxDependencyOnNested, Cyclic) {
31 using Scope = box::autobox::structs::CyclicDependencyOnNested;
32
33 AssertFieldCount<Scope::Foo, 1>();
34 AssertFieldType<decltype(Scope::Foo::field), Scope::Bar::Nested>();
35
36 AssertFieldCount<Scope::Bar, 1>();
37 AssertFieldType<decltype(Scope::Bar::field), utils::Box<Scope::Foo>>();
38}
39
40TEST(BoxDependencyOnNested, RepeatedCyclic) {
41 using Scope = box::autobox::structs::RepeatedCyclicDependencyOnNested;
42
43 AssertFieldCount<Scope::Foo, 1>();
44 AssertFieldType<decltype(Scope::Foo::field), std::vector<Scope::Bar::Nested>>();
45
46 AssertFieldCount<Scope::Bar, 1>();
47 AssertFieldType<decltype(Scope::Bar::field), utils::Box<Scope::Foo>>();
48}
49
50TEST(BoxDependencyOnNested, VectorsDoNotCreateCycles) {
51 using Scope = box::autobox::structs::VectorsDoNotCreateCycles;
52
53 AssertFieldCount<Scope::Foo, 1>();
54 AssertFieldType<decltype(Scope::Foo::field), std::vector<Scope::Bar>>();
55
56 AssertFieldCount<Scope::Bar, 1>();
57 AssertFieldType<decltype(Scope::Bar::field), std::vector<Scope::Foo>>();
58}