@@ -137,3 +137,41 @@ TEST(Preconditions, Basic)
137
137
ASSERT_EQ (counters[2 ], 0 ); // skipped
138
138
ASSERT_EQ (counters[3 ], 1 ); // executed
139
139
}
140
+
141
+
142
+ TEST (Preconditions, Issue533)
143
+ {
144
+ BehaviorTreeFactory factory;
145
+ std::array<int , 3 > counters;
146
+ RegisterTestTick (factory, " Test" , counters);
147
+
148
+ const std::string xml_text = R"(
149
+
150
+ <root BTCPP_format="4" >
151
+ <BehaviorTree ID="MainTree">
152
+ <Sequence>
153
+ <TestA _skipIf="A!=1" />
154
+ <TestB _skipIf="A!=2" _onSuccess="A=1"/>
155
+ <TestC _skipIf="A!=3" _onSuccess="A=2"/>
156
+ </Sequence>
157
+ </BehaviorTree>
158
+ </root>)" ;
159
+
160
+ auto tree = factory.createTreeFromText (xml_text);
161
+ tree.subtrees .front ()->blackboard ->set (" A" , 3 );
162
+
163
+ tree.tickOnce ();
164
+ ASSERT_EQ (counters[0 ], 0 );
165
+ ASSERT_EQ (counters[1 ], 0 );
166
+ ASSERT_EQ (counters[2 ], 1 );
167
+
168
+ tree.tickOnce ();
169
+ ASSERT_EQ (counters[0 ], 0 );
170
+ ASSERT_EQ (counters[1 ], 1 );
171
+ ASSERT_EQ (counters[2 ], 1 );
172
+
173
+ tree.tickOnce ();
174
+ ASSERT_EQ (counters[0 ], 1 );
175
+ ASSERT_EQ (counters[1 ], 1 );
176
+ ASSERT_EQ (counters[2 ], 1 );
177
+ }
0 commit comments