Blender V4.3
hierarchy_context_order_test.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2019 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
5
6#include "testing/testing.h"
7
8#include "BLI_utildefines.h"
9
10namespace blender::io {
11
12namespace {
13
14Object *fake_pointer(int value)
15{
16 return static_cast<Object *>(POINTER_FROM_INT(value));
17}
18
19} // namespace
20
21class HierarchyContextOrderTest : public testing::Test {};
22
24{
25 HierarchyContext ctx_a = {nullptr};
26 ctx_a.object = fake_pointer(1);
27 ctx_a.duplicator = nullptr;
28
29 HierarchyContext ctx_b = {nullptr};
30 ctx_b.object = fake_pointer(2);
31 ctx_b.duplicator = nullptr;
32
33 EXPECT_LT(ctx_a, ctx_b);
34 EXPECT_FALSE(ctx_b < ctx_a);
35 EXPECT_FALSE(ctx_a < ctx_a);
36}
37
38TEST_F(HierarchyContextOrderTest, DuplicatorPointerTest)
39{
40 HierarchyContext ctx_a = {nullptr};
41 ctx_a.object = fake_pointer(1);
42 ctx_a.duplicator = fake_pointer(1);
43 ctx_a.export_name = "A";
44
45 HierarchyContext ctx_b = {nullptr};
46 ctx_b.object = fake_pointer(1);
47 ctx_b.duplicator = fake_pointer(1);
48 ctx_b.export_name = "B";
49
50 EXPECT_LT(ctx_a, ctx_b);
51 EXPECT_FALSE(ctx_b < ctx_a);
52 EXPECT_FALSE(ctx_a < ctx_a);
53}
54
56{
57 HierarchyContext ctx_a = {nullptr};
58 ctx_a.object = fake_pointer(1);
59 ctx_a.export_parent = fake_pointer(1);
60
61 HierarchyContext ctx_b = {nullptr};
62 ctx_b.object = fake_pointer(1);
63 ctx_b.export_parent = fake_pointer(2);
64
65 EXPECT_LT(ctx_a, ctx_b);
66 EXPECT_FALSE(ctx_b < ctx_a);
67 EXPECT_FALSE(ctx_a < ctx_a);
68}
69
71{
72 HierarchyContext ctx_a = {nullptr};
73 ctx_a.object = fake_pointer(1);
74 ctx_a.export_parent = fake_pointer(1);
75 ctx_a.duplicator = nullptr;
76 ctx_a.export_name = "A";
77
78 HierarchyContext ctx_b = {nullptr};
79 ctx_b.object = fake_pointer(2);
80 ctx_b.export_parent = nullptr;
81 ctx_b.duplicator = fake_pointer(1);
82 ctx_b.export_name = "B";
83
84 HierarchyContext ctx_c = {nullptr};
85 ctx_c.object = fake_pointer(2);
86 ctx_c.export_parent = fake_pointer(2);
87 ctx_c.duplicator = fake_pointer(1);
88 ctx_c.export_name = "C";
89
90 HierarchyContext ctx_d = {nullptr};
91 ctx_d.object = fake_pointer(2);
92 ctx_d.export_parent = fake_pointer(3);
93 ctx_d.duplicator = nullptr;
94 ctx_d.export_name = "D";
95
96 EXPECT_LT(ctx_a, ctx_b);
97 EXPECT_LT(ctx_a, ctx_c);
98 EXPECT_LT(ctx_a, ctx_d);
99 EXPECT_LT(ctx_b, ctx_c);
100 EXPECT_LT(ctx_b, ctx_d);
101 EXPECT_LT(ctx_c, ctx_d);
102
103 EXPECT_FALSE(ctx_b < ctx_a);
104 EXPECT_FALSE(ctx_c < ctx_a);
105 EXPECT_FALSE(ctx_d < ctx_a);
106 EXPECT_FALSE(ctx_c < ctx_b);
107 EXPECT_FALSE(ctx_d < ctx_b);
108 EXPECT_FALSE(ctx_d < ctx_c);
109}
110
111} // namespace blender::io
#define POINTER_FROM_INT(i)
TEST_F(AbstractHierarchyIteratorTest, ExportHierarchyTest)