TEST_F(ModelFixture, SkyTemperature_Hierarchy) { Model model; SkyTemperature skyTemperature(model); // default parent is Site, but not made by parent() OptionalParentObject opo = skyTemperature.parent(); EXPECT_FALSE(opo); // construct Site Site site = model.getUniqueModelObject<Site>(); opo = skyTemperature.parent(); ASSERT_TRUE(opo); ParentObject skyTempParent = *opo; EXPECT_TRUE(skyTempParent == site); // Make skyTemperature apply to a RunPeriod RunPeriod runPeriod = model.getUniqueModelObject<RunPeriod>(); EXPECT_TRUE(skyTemperature.setParent(runPeriod)); opo = skyTemperature.parent(); ASSERT_TRUE(opo); skyTempParent = *opo; EXPECT_TRUE(skyTempParent == runPeriod); EXPECT_EQ(static_cast<unsigned>(0),site.children().size()); SkyTemperature globalSkyTemperature(model); opo = globalSkyTemperature.parent(); ASSERT_TRUE(opo); ParentObject globalSkyTempParent = *opo; EXPECT_TRUE(globalSkyTempParent == site); EXPECT_EQ(static_cast<unsigned>(1),site.children().size()); EXPECT_EQ(static_cast<unsigned>(1),runPeriod.children().size()); EXPECT_EQ(static_cast<unsigned>(4),model.numObjects()); // skyTemperature can also be parented by SizingPeriod objects DesignDay designDay(model); EXPECT_TRUE(skyTemperature.setParent(designDay)); WeatherFileDays weatherFileDays(model); EXPECT_TRUE(skyTemperature.setParent(weatherFileDays)); WeatherFileConditionType weatherFileConditionType(model); EXPECT_TRUE(skyTemperature.setParent(weatherFileConditionType)); }
TEST_F(ModelFixture, ShadingSurfaceGroup_Site_Hierarchy) { Model model; // make a site Site site = model.getUniqueModelObject<Site>(); // add a shading surface group ShadingSurfaceGroup group(model); EXPECT_TRUE(group.setShadingSurfaceType("Site")); // 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 site ASSERT_EQ(static_cast<unsigned>(1), site.children().size()); EXPECT_EQ(group.handle(), site.children()[0].handle()); // check parent from group ASSERT_TRUE(group.parent()); EXPECT_EQ(site.handle(), group.parent()->handle()); // check parent from surface ASSERT_TRUE(surface.parent()); EXPECT_EQ(group.handle(), surface.parent()->handle()); }