Blender  V3.3
hierarchy_context_order_test.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2019 Blender Foundation. All rights reserved. */
4 
5 #include "testing/testing.h"
6 
7 #include "BLI_utildefines.h"
8 
9 namespace blender::io {
10 
11 namespace {
12 
13 Object *fake_pointer(int value)
14 {
15  return static_cast<Object *>(POINTER_FROM_INT(value));
16 }
17 
18 } // namespace
19 
20 class HierarchyContextOrderTest : public testing::Test {
21 };
22 
23 TEST_F(HierarchyContextOrderTest, ObjectPointerTest)
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 
38 TEST_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)