86TEST(OrderTest, copy_order) {
87 auto numberOfStates = 7;
97 auto matrix = matrixBuilder.
build();
103 order.addToNode(4, order.getNode(2));
104 order.addBetween(5, order.getNode(0), order.getNode(3));
105 order.addBetween(6, order.getNode(5), order.getNode(3));
139 order.addRelationNodes(order.getNode(6), order.getNode(4));
159 auto numberOfStates = 7;
169 auto matrix = matrixBuilder.
build();
175 order.addToNode(4, order.getNode(2));
180 orderCopy.addBetween(5, orderCopy.getNode(0), orderCopy.getNode(3));
181 EXPECT_TRUE(orderCopy.contains(5));
182 EXPECT_FALSE(order.contains(5));
185 order.addBetween(6, order.getNode(0), order.getNode(3));
186 EXPECT_TRUE(order.contains(6));
187 EXPECT_FALSE(orderCopy.contains(6));
192 orderCopy.mergeNodes(orderCopy.getNode(2), orderCopy.getNode(3));
197 EXPECT_NE(order.getNode(0), orderCopy.getNode(0));
198 EXPECT_NE(order.getTop(), orderCopy.getTop());
199 EXPECT_NE(order.getBottom(), orderCopy.getBottom());
242TEST(OrderTest, merge_nodes_inconsistent) {
246 auto numberOfStates = 6;
256 auto matrix = matrixBuilder.
build();
263 order.addBetween(3, order.getNode(0), order.getNode(2));
264 order.addBetween(4, order.getNode(3), order.getNode(2));
265 order.addBetween(5, order.getNode(4), order.getNode(2));
274 EXPECT_FALSE(order.mergeNodes(order.getNode(3), order.getNode(2)));
275 EXPECT_TRUE(order.isInvalid());
278 EXPECT_NO_FATAL_FAILURE(order.compare(4, 5));
279 EXPECT_NO_FATAL_FAILURE(order.compare(3, 4));
280 EXPECT_NO_FATAL_FAILURE(order.compare(0, 1));
284 auto numberOfStates = 7;
294 auto matrix = matrixBuilder.
build();
300 order.addToNode(4, order.getNode(2));
301 order.addBetween(5, order.getNode(0), order.getNode(3));
302 order.addBetween(6, order.getNode(5), order.getNode(3));
304 std::vector<uint_fast64_t> statesToSort = std::vector<uint_fast64_t>{0, 1, 5, 6};
305 auto sortedStates = order.sortStates(&statesToSort);
306 EXPECT_EQ(4ul, sortedStates.size());
308 auto itr = sortedStates.begin();
309 EXPECT_EQ(0ul, *itr);
310 EXPECT_EQ(5ul, *(++itr));
311 EXPECT_EQ(6ul, *(++itr));
312 EXPECT_EQ(1ul, *(++itr));
314 statesToSort = std::vector<uint_fast64_t>{0, 1, 5, 6, 2};
315 sortedStates = order.sortStates(&statesToSort);
316 EXPECT_EQ(5ul, sortedStates.size());
318 itr = sortedStates.begin();
319 EXPECT_EQ(0ul, *itr);
320 EXPECT_EQ(5ul, *(++itr));
321 EXPECT_EQ(6ul, *(++itr));
322 EXPECT_EQ(1ul, *(++itr));
323 EXPECT_EQ(7ul, *(++itr));
325 statesToSort = std::vector<uint_fast64_t>{0, 2, 1, 5, 6};
326 sortedStates = order.sortStates(&statesToSort);
327 EXPECT_EQ(5ul, sortedStates.size());
329 itr = sortedStates.begin();
330 EXPECT_EQ(0ul, *itr);
331 EXPECT_EQ(2ul, *(++itr));
332 EXPECT_EQ(1ul, *(++itr));
333 EXPECT_EQ(7ul, *(++itr));
334 EXPECT_EQ(7ul, *(++itr));