Test in context of Workspace, since order needs objectGetter.
| 14 | |
| 15 | // Test in context of Workspace, since order needs objectGetter. |
| 16 | TEST_F(IdfFixture, WorkspaceObjectOrder) { |
| 17 | Workspace workspace(IdfFixture::epIdfFile, openstudio::StrictnessLevel::Draft); |
| 18 | |
| 19 | WorkspaceObjectOrder wsOrder = workspace.order(); |
| 20 | |
| 21 | EXPECT_TRUE(wsOrder.inOrder(workspace.objects()[0].handle())); |
| 22 | |
| 23 | // save current order |
| 24 | OptionalHandleVector workspaceOrder = wsOrder.directOrder(); |
| 25 | ASSERT_TRUE(workspaceOrder); |
| 26 | |
| 27 | // order by enum |
| 28 | wsOrder.setOrderByIddEnum(); |
| 29 | WorkspaceObjectVector objects = workspace.objects(true); |
| 30 | for (auto it = objects.begin(), itEnd = objects.end() - 1; it != itEnd; ++it) { |
| 31 | auto nxt = it; |
| 32 | ++nxt; |
| 33 | EXPECT_TRUE(it->iddObject().type() <= nxt->iddObject().type()); |
| 34 | } |
| 35 | |
| 36 | // restore order |
| 37 | wsOrder.setDirectOrder(*workspaceOrder); |
| 38 | HandleVector handles = workspace.handles(true); |
| 39 | // handles does not include version object, while direct order does |
| 40 | HandleVector tempOrder = *workspaceOrder; |
| 41 | auto it = std::find(tempOrder.begin(), tempOrder.end(), workspace.versionObject()->handle()); |
| 42 | tempOrder.erase(it); |
| 43 | EXPECT_TRUE(tempOrder == handles); |
| 44 | |
| 45 | // move objects directly |
| 46 | wsOrder.insert(handles[32], handles[12]); |
| 47 | HandleVector newOrder = workspace.handles(true); |
| 48 | EXPECT_EQ(handles.size(), newOrder.size()); |
| 49 | EXPECT_TRUE(handles[32] == newOrder[12]); |
| 50 | EXPECT_TRUE(handles[12] == newOrder[13]); |
| 51 | |
| 52 | wsOrder.swap(handles[80], handles[100]); |
| 53 | newOrder = workspace.handles(true); |
| 54 | EXPECT_EQ(handles.size(), newOrder.size()); |
| 55 | EXPECT_TRUE(handles[80] == newOrder[100]); |
| 56 | EXPECT_TRUE(handles[100] == newOrder[80]); |
| 57 | } |
| 58 | |
| 59 | TEST_F(IdfFixture, WorkspaceObjectOrder_ByIddObjectType) { |
| 60 | Workspace workspace(IdfFixture::epIdfFile, openstudio::StrictnessLevel::Draft); |
nothing calls this directly
no test coverage detected