| 33 | using std::string; |
| 34 | |
| 35 | TEST_F(ModelFixture, EMSProgram_EMSProgram) { |
| 36 | Model model; |
| 37 | |
| 38 | Building building = model.getUniqueModelObject<Building>(); |
| 39 | |
| 40 | ThermalZone zone1(model); |
| 41 | ThermalZone zone2(model); |
| 42 | |
| 43 | // add Site Outdoor Air Drybulb Temperature |
| 44 | OutputVariable siteOutdoorAirDrybulbTemperature("Site Outdoor Air Drybulb Temperature", model); |
| 45 | |
| 46 | //add sensor |
| 47 | EnergyManagementSystemSensor OATdbSensor(model, siteOutdoorAirDrybulbTemperature); |
| 48 | OATdbSensor.setName("OATdb Sensor"); |
| 49 | //OATdbSensor.setOutputVariable(siteOutdoorAirDrybulbTemperature); |
| 50 | |
| 51 | //add fan |
| 52 | Schedule s = model.alwaysOnDiscreteSchedule(); |
| 53 | FanConstantVolume fan(model, s); |
| 54 | fan.setName("fan"); |
| 55 | |
| 56 | //add actuator on fan |
| 57 | std::string fanControlType = "Fan Pressure Rise"; |
| 58 | std::string ComponentType = "Fan"; |
| 59 | EnergyManagementSystemActuator fanActuator(fan, ComponentType, fanControlType); |
| 60 | std::string fanName = fan.name().get() + "Pressure_Actuator"; |
| 61 | fanActuator.setName(fanName); |
| 62 | |
| 63 | //add program |
| 64 | EnergyManagementSystemProgram fan_program_1(model); |
| 65 | std::string programName = fan.name().get() + "Pressure_Rise_Program_by_Body"; |
| 66 | fan_program_1.setName(programName); |
| 67 | //this body has /r/n in it |
| 68 | std::string fan_program_1_body = " SET mult = " + toString(OATdbSensor.handle()) + " / 15.0 !- This is nonsense\r\n SET " |
| 69 | + toString(fanActuator.handle()) + " = 250 * mult !- More nonsense"; |
| 70 | //this is what the body should look like with 2 /n's and compare TRUE |
| 71 | std::string fan_program_body_test = "SET mult = " + toString(OATdbSensor.handle()) + " / 15.0 !- This is nonsense\nSET " |
| 72 | + toString(fanActuator.handle()) + " = 250 * mult !- More nonsense\n"; |
| 73 | //the added lines should compare TRUE to below |
| 74 | std::string line1_test = "SET mult = " + toString(OATdbSensor.handle()) + " / 15.0 !- This is nonsense\n"; |
| 75 | std::string line2_test = "SET " + toString(fanActuator.handle()) + " = 250 * mult !- More nonsense\n"; |
| 76 | |
| 77 | //set body |
| 78 | fan_program_1.setBody(fan_program_1_body); |
| 79 | |
| 80 | //check body |
| 81 | boost::optional<std::string> body = fan_program_1.body(); |
| 82 | EXPECT_EQ(fan_program_body_test, body.get()); |
| 83 | |
| 84 | //check lines |
| 85 | boost::optional<std::vector<std::string>> lines = fan_program_1.lines(); |
| 86 | EXPECT_EQ(2, lines.get().size()); |
| 87 | EXPECT_EQ(line1_test, lines.get()[0]); |
| 88 | EXPECT_EQ(line2_test, lines.get()[1]); |
| 89 | |
| 90 | EXPECT_EQ(2, fan_program_1.referencedObjects().size()); |
| 91 | EXPECT_EQ(true, |
| 92 | (fan_program_1.referencedObjects()[0].nameString() == fanName) || (fan_program_1.referencedObjects()[0].nameString() == "OATdb_Sensor")); |
nothing calls this directly
no test coverage detected