TEST_F(IdfFixture, WorkspaceObject_Lights_Strictness_None) { Workspace workspace(StrictnessLevel::None,IddFileType::EnergyPlus); EXPECT_TRUE(workspace.isValid()); OptionalWorkspaceObject w = workspace.addObject(IdfObject(IddObjectType::Lights)); ASSERT_TRUE(w); OptionalWorkspaceObject light = workspace.getObject(w->handle()); ASSERT_TRUE(light); // can invalidate all we want EXPECT_TRUE(light->setString(LightsFields::Name, "")); EXPECT_TRUE(light->setDouble(LightsFields::Name, 0)); EXPECT_TRUE(light->setString(LightsFields::ZoneorZoneListName, "")); EXPECT_TRUE(light->setPointer(LightsFields::ZoneorZoneListName, Handle())); EXPECT_TRUE(light->setString(LightsFields::ScheduleName, "")); EXPECT_TRUE(light->setPointer(LightsFields::ScheduleName, Handle())); EXPECT_TRUE(light->setString(LightsFields::DesignLevelCalculationMethod, "")); EXPECT_TRUE(light->setDouble(LightsFields::DesignLevelCalculationMethod, 0)); EXPECT_TRUE(light->setString(LightsFields::LightingLevel, "Hi")); EXPECT_TRUE(light->setDouble(LightsFields::LightingLevel, -1)); EXPECT_TRUE(light->setDouble(LightsFields::LightingLevel, 0)); EXPECT_TRUE(light->setDouble(LightsFields::LightingLevel, 1)); EXPECT_TRUE(workspace.isValid(StrictnessLevel::None)); EXPECT_FALSE(workspace.isValid(StrictnessLevel::Draft)); EXPECT_FALSE(workspace.isValid(StrictnessLevel::Final)); }
TEST_F(IdfFixture, WorkspaceObject_Lights_Strictness_Draft) { Workspace workspace(StrictnessLevel::Draft,IddFileType::EnergyPlus); EXPECT_TRUE(workspace.isValid()); OptionalWorkspaceObject w = workspace.addObject(IdfObject(IddObjectType::Lights)); ASSERT_TRUE(w); OptionalWorkspaceObject light = workspace.getObject(w->handle()); ASSERT_TRUE(light); // certain things we can't invalidate EXPECT_TRUE(light->setString(LightsFields::Name, "")); EXPECT_TRUE(light->setDouble(LightsFields::Name, 0)); EXPECT_TRUE(light->setString(LightsFields::ZoneorZoneListName, "")); // PointerType error EXPECT_TRUE(light->setPointer(LightsFields::ZoneorZoneListName, Handle())); // PointerType error EXPECT_TRUE(light->setString(LightsFields::ScheduleName, "")); // PointerType error EXPECT_TRUE(light->setPointer(LightsFields::ScheduleName, Handle())); // PointerType error EXPECT_TRUE(light->setString(LightsFields::DesignLevelCalculationMethod, "")); // this is ok because there is a default EXPECT_FALSE(light->setString(LightsFields::DesignLevelCalculationMethod, "Hi")); // DataType error EXPECT_FALSE(light->setDouble(LightsFields::DesignLevelCalculationMethod, 0)); // DataType error EXPECT_FALSE(light->setString(LightsFields::LightingLevel, "Hi")); // DataType error EXPECT_FALSE(light->setDouble(LightsFields::LightingLevel, -1)); // NumericBound error EXPECT_TRUE(light->setDouble(LightsFields::LightingLevel, 0)); EXPECT_TRUE(light->setDouble(LightsFields::LightingLevel, 1)); EXPECT_TRUE(workspace.isValid(StrictnessLevel::None)); EXPECT_TRUE(workspace.isValid(StrictnessLevel::Draft)); EXPECT_FALSE(workspace.isValid(StrictnessLevel::Final)); }
TEST_F(IdfFixture, WorkspaceObject_Filter_Sources) { Workspace ws; OptionalWorkspaceObject node = ws.addObject(IdfObject(IddObjectType::OS_Node)); OptionalWorkspaceObject node2 = ws.addObject(IdfObject(IddObjectType::OS_Node)); OptionalWorkspaceObject node3 = ws.addObject(IdfObject(IddObjectType::OS_Node)); OptionalWorkspaceObject spm = ws.addObject(IdfObject(IddObjectType::OS_SetpointManager_MixedAir)); EXPECT_TRUE(spm->setPointer(OS_SetpointManager_MixedAirFields::SetpointNodeorNodeListName, node->handle())); EXPECT_TRUE(spm->setPointer(OS_SetpointManager_MixedAirFields::FanInletNodeName,node->handle())); EXPECT_TRUE(spm->setPointer(OS_SetpointManager_MixedAirFields::FanOutletNodeName,node2->handle())); EXPECT_TRUE(spm->setPointer(OS_SetpointManager_MixedAirFields::ReferenceSetpointNodeName,node3->handle())); WorkspaceObjectVector sourcesVector = node->sources(); EXPECT_EQ(1, sourcesVector.size()); sourcesVector = node->getSources(IddObjectType::OS_SetpointManager_MixedAir); EXPECT_EQ(1, sourcesVector.size()); }
TEST_F(EnergyPlusFixture,ReverseTranslator_Zone) { Workspace inWorkspace(StrictnessLevel::None, IddFileType::EnergyPlus); OptionalWorkspaceObject zoneObject = inWorkspace.addObject(IdfObject(IddObjectType::Zone)); ASSERT_TRUE(zoneObject); OptionalWorkspaceObject lightsObject = inWorkspace.addObject(IdfObject(IddObjectType::Lights)); ASSERT_TRUE(lightsObject); EXPECT_TRUE(lightsObject->setPointer(openstudio::LightsFields::ZoneorZoneListName, zoneObject->handle())); ReverseTranslator reverseTranslator; ASSERT_NO_THROW(reverseTranslator.translateWorkspace(inWorkspace)); Model model = reverseTranslator.translateWorkspace(inWorkspace); ASSERT_EQ(static_cast<unsigned>(1), model.getModelObjects<openstudio::model::ThermalZone>().size()); openstudio::model::ThermalZone zone = model.getModelObjects<openstudio::model::ThermalZone>()[0]; ASSERT_EQ(static_cast<unsigned>(1), model.getModelObjects<openstudio::model::Space>().size()); openstudio::model::Space space = model.getModelObjects<openstudio::model::Space>()[0]; ASSERT_EQ(static_cast<unsigned>(1), model.getModelObjects<openstudio::model::Lights>().size()); openstudio::model::Lights lights = model.getModelObjects<openstudio::model::Lights>()[0]; ASSERT_TRUE(lights.space()); EXPECT_TRUE(space.handle() == lights.space()->handle()); ASSERT_TRUE(lights.space()->thermalZone()); EXPECT_TRUE(zone.handle() == lights.space()->thermalZone()->handle()); }