TEST_F(IdfFixture, IdfObject_ConstructFromText_MultifieldLines) { std::string text = "Building,Building, !- Name\n\ 30.0, !- North Axis (deg) \n\ City, !- Terrain \n\ 0.04,0.4, !- Load and temperature convergence values\n\ FullExterior, !- Solar Distribution \n\ 25; !- Maximum Number of Warmup Days"; OptionalIdfObject oObj = IdfObject::load(text); ASSERT_TRUE(oObj); IdfObject building = *oObj; EXPECT_EQ(8u,building.numFields()); ASSERT_TRUE(building.fieldComment(5,false)); EXPECT_TRUE(building.fieldComment(5,false).get().empty()); // parser should strip !- comments ASSERT_TRUE(building.fieldComment(5,true)); EXPECT_FALSE(building.fieldComment(5,true).get().empty()); text = "Site:GroundTemperature:BuildingSurface,20.03,20.03,20.13,20.30,20.43,20.52,20.62,20.77,20.78,20.55,20.44,20.20;"; oObj = IdfObject::load(text); ASSERT_TRUE(oObj); IdfObject groundTemperature = *oObj; EXPECT_EQ(static_cast<unsigned>(12),groundTemperature.numFields()); }
TEST_F(IdfFixture, IdfObject_DefaultFieldComments) { // OBJECT WITH NO FIELD COMMENTS std::stringstream text; text << " Schedule:Day:Interval," << std::endl << " A Schedule," << std::endl << " Any Number," << std::endl << " ," << std::endl << " 09:00," << std::endl << " 0," << std::endl << " 22:00," << std::endl << " 1," << std::endl << " 24:00," << std::endl << " 0;"; OptionalIdfObject oObj = IdfObject::load(text.str()); ASSERT_TRUE(oObj); IdfObject object = *oObj; // non-extensible fields OptionalString fc = object.fieldComment(0,true); OptionalIddField iddField = object.iddObject().getField(0); ASSERT_TRUE(fc); ASSERT_TRUE(iddField); EXPECT_EQ(makeIdfEditorComment(iddField->name()),*fc); fc = object.fieldComment(0); ASSERT_TRUE(fc); EXPECT_TRUE(fc->empty()); fc = object.fieldComment(2,true); iddField = object.iddObject().getField(2); ASSERT_TRUE(fc); ASSERT_TRUE(iddField); EXPECT_EQ(makeIdfEditorComment(iddField->name()),*fc); fc = object.fieldComment(2); ASSERT_TRUE(fc); EXPECT_TRUE(fc->empty()); // extensible fields fc = object.fieldComment(6,true); iddField = object.iddObject().getField(6); ASSERT_TRUE(fc); ASSERT_TRUE(iddField); EXPECT_EQ(makeIdfEditorComment(iddField->name()) + " 2",*fc); fc = object.fieldComment(6); ASSERT_TRUE(fc); EXPECT_TRUE(fc->empty()); // non-existant fields fc = object.fieldComment(14,true); EXPECT_FALSE(fc); // OBJECT WITH SOME FIELD COMMENTS text.str(""); text << " Schedule:Day:Interval," << std::endl << " A Schedule," << std::endl << " Any Number," << std::endl << " ," << std::endl << " 09:00, ! opening time" << std::endl << " 0," << std::endl << " 22:00, ! closing time" << std::endl << " 1," << std::endl << " 24:00," << std::endl << " 0;"; oObj = IdfObject::load(text.str()); ASSERT_TRUE(oObj); object = *oObj; // returns set values fc = object.fieldComment(3,true); ASSERT_TRUE(fc); EXPECT_EQ("! opening time",*fc); fc = object.fieldComment(5,true); ASSERT_TRUE(fc); EXPECT_EQ("! closing time",*fc); // returns default for fields behind fields with set values fc = object.fieldComment(4,true); iddField = object.iddObject().getField(4); ASSERT_TRUE(fc); ASSERT_TRUE(iddField); EXPECT_EQ(makeIdfEditorComment(iddField->name()) + " 1",*fc); fc = object.fieldComment(6); ASSERT_TRUE(fc); EXPECT_TRUE(fc->empty()); // returns default for fields past fields with set values fc = object.fieldComment(6,true); iddField = object.iddObject().getField(6); ASSERT_TRUE(fc); ASSERT_TRUE(iddField); EXPECT_EQ(makeIdfEditorComment(iddField->name()) + " 2",*fc); fc = object.fieldComment(6); ASSERT_TRUE(fc); EXPECT_TRUE(fc->empty()); }