TEST_F(ModelFixture, ShadingSurfaceGroup_Space_Hierarchy) { Model model; // add a space Space space(model); // add a shading surface group ShadingSurfaceGroup group(model); EXPECT_EQ("Building", group.shadingSurfaceType()); EXPECT_TRUE(group.setSpace(space)); EXPECT_EQ("Space", group.shadingSurfaceType()); ASSERT_TRUE(group.space()); EXPECT_EQ(space.handle(), group.space()->handle()); // make a new shading surface Point3dVector points; points.push_back(Point3d(0, 2, 0)); points.push_back(Point3d(0, 0, 0)); points.push_back(Point3d(1, 0, 0)); ShadingSurface surface(points, model); EXPECT_TRUE(surface.setShadingSurfaceGroup(group)); ASSERT_TRUE(surface.shadingSurfaceGroup()); EXPECT_EQ(group.handle(), surface.shadingSurfaceGroup()->handle()); // check children from group ASSERT_EQ(static_cast<unsigned>(1), group.children().size()); EXPECT_EQ(surface.handle(), group.children()[0].handle()); // now check children from space ASSERT_EQ(static_cast<unsigned>(1), space.children().size()); EXPECT_EQ(group.handle(), space.children()[0].handle()); // check parent from group ASSERT_TRUE(group.parent()); EXPECT_EQ(space.handle(), group.parent()->handle()); // check parent from surface ASSERT_TRUE(surface.parent()); EXPECT_EQ(group.handle(), surface.parent()->handle()); // clone the space ModelObject clone = space.clone(model); OptionalSpace spaceClone = clone.optionalCast<Space>(); ASSERT_TRUE(spaceClone); ASSERT_EQ(static_cast<unsigned>(1), spaceClone->children().size()); EXPECT_NE(group.handle(), spaceClone->children()[0].handle()); OptionalShadingSurfaceGroup cloneChild = spaceClone->children()[0].optionalCast<ShadingSurfaceGroup>(); ASSERT_TRUE(cloneChild); ASSERT_EQ(static_cast<unsigned>(1), cloneChild->children().size()); EXPECT_NE(surface.handle(), cloneChild->children()[0].handle()); }
TEST_F(ModelFixture, InteriorPartitionSurface_Hierarchy) { Model model; Space space(model); // add a interior partition surface group InteriorPartitionSurfaceGroup group(model); EXPECT_FALSE(group.space()); EXPECT_TRUE(group.setSpace(space)); ASSERT_TRUE(group.space()); EXPECT_EQ(space.handle(), group.space()->handle()); // make a new interior partition surface Point3dVector points; points.push_back(Point3d(0, 2, 0)); points.push_back(Point3d(0, 0, 0)); points.push_back(Point3d(1, 0, 0)); InteriorPartitionSurface surface(points, model); EXPECT_FALSE(surface.interiorPartitionSurfaceGroup()); EXPECT_TRUE(surface.setInteriorPartitionSurfaceGroup(group)); ASSERT_TRUE(surface.interiorPartitionSurfaceGroup()); EXPECT_EQ(group.handle(), surface.interiorPartitionSurfaceGroup()->handle()); // check children from group ASSERT_EQ(static_cast<unsigned>(1), group.children().size()); EXPECT_EQ(surface.handle(), group.children()[0].handle()); // now check children from space ASSERT_EQ(static_cast<unsigned>(1), space.children().size()); EXPECT_EQ(group.handle(), space.children()[0].handle()); // check parent from group ASSERT_TRUE(group.parent()); EXPECT_EQ(space.handle(), group.parent()->handle()); // check parent from surface ASSERT_TRUE(surface.parent()); EXPECT_EQ(group.handle(), surface.parent()->handle()); // clone the space ModelObject clone = space.clone(model); OptionalSpace spaceClone = clone.optionalCast<Space>(); ASSERT_TRUE(spaceClone); ASSERT_EQ(static_cast<unsigned>(1), spaceClone->children().size()); EXPECT_NE(group.handle(), spaceClone->children()[0].handle()); }