// extensible object test, BuildingSurface:Detailed void IddFile_BuildingSurfaceDetailed(const IddFile& iddFile) { string objectName("BuildingSurface:Detailed"); OptionalIddObject object = iddFile.getObject(objectName); ASSERT_TRUE(object); EXPECT_TRUE(iequals(object->name(), objectName)); ASSERT_TRUE(object->nonextensibleFields().size() > 0); EXPECT_EQ(object->nonextensibleFields().size(), static_cast<unsigned int>(10)); EXPECT_FALSE(object->properties().format.empty()); EXPECT_TRUE(iequals("vertices", object->properties().format)); EXPECT_TRUE(object->properties().extensible); EXPECT_TRUE(object->properties().numExtensible); ASSERT_EQ(static_cast<unsigned int>(3), object->properties().numExtensible); EXPECT_FALSE(object->getField("Vertex 1 X-coordinate")); EXPECT_FALSE(object->getField("Vertex 1 X-coordinate")); ASSERT_TRUE(object->extensibleGroup().size() > 0); string fieldName("Vertex X-coordinate"); EXPECT_TRUE(iequals(fieldName, object->extensibleGroup().front().name() )); OptionalIddField field = object->getField(fieldName); ASSERT_TRUE(field); EXPECT_TRUE(iequals(fieldName, field->name())); EXPECT_TRUE(field->properties().beginExtensible); fieldName = "Vertex Z-coordinate"; EXPECT_TRUE(iequals(fieldName, object->extensibleGroup().back().name() )); field = object->getField(fieldName); ASSERT_TRUE(field); EXPECT_TRUE(iequals(fieldName, field->name())); EXPECT_FALSE(field->properties().beginExtensible); }
TEST_F(IddFixture,IddFactory_IddObjects) { IddObject object; OptionalIddObject candidate = IddFactory::instance().getObject(IddObjectType::UserCustom); EXPECT_FALSE(candidate); candidate = IddFactory::instance().getObject(IddObjectType::Catchall); ASSERT_TRUE(candidate); object = *candidate; candidate = IddFactory::instance().getObject("catchall"); ASSERT_TRUE(candidate); EXPECT_TRUE(object == *candidate); candidate = IddFactory::instance().getObject(IddObjectType::CommentOnly); ASSERT_TRUE(candidate); object = *candidate; candidate = IddFactory::instance().getObject("coMmentonLy"); ASSERT_TRUE(candidate); EXPECT_TRUE(object == *candidate); candidate = IddFactory::instance().getObject(IddObjectType::Lights); ASSERT_TRUE(candidate); object = *candidate; candidate = IddFactory::instance().getObject("lights"); ASSERT_TRUE(candidate); EXPECT_TRUE(object == *candidate); EXPECT_EQ("Lights", object.name()); ASSERT_TRUE(object.nonextensibleFields().size() > static_cast<unsigned>(0)); EXPECT_EQ("Return Air Fraction Function of Plenum Temperature Coefficient 2", object.nonextensibleFields().back().name()); OptionalIddField field = object.getField(0); ASSERT_TRUE(field); EXPECT_EQ("Name",field->name()); EXPECT_TRUE(field->properties().required); EXPECT_EQ(IddFieldType(IddFieldType::AlphaType),field->properties().type); ASSERT_TRUE(!field->properties().references.empty()); EXPECT_EQ(static_cast<unsigned>(1), field->properties().references.size()); EXPECT_EQ("LightsNames", *(field->properties().references.begin())); EXPECT_FALSE(field->properties().stringDefault); // OptionalString should be false--no default name EXPECT_EQ(IddFieldProperties::Unbounded,field->properties().minBoundType); ASSERT_TRUE(object.nonextensibleFields().size() > static_cast<unsigned>(3)); field = object.getField(3); EXPECT_EQ("Design Level Calculation Method",field->name()); EXPECT_FALSE(field->properties().required); EXPECT_TRUE(field->properties().stringDefault); EXPECT_EQ("LightingLevel",*(field->properties().stringDefault)); EXPECT_EQ(IddFieldType(IddFieldType::ChoiceType),field->properties().type); EXPECT_EQ(static_cast<unsigned>(3),field->keys().size()); }
// case insensitive test void IddFile_bUiLdInG(const IddFile& iddFile) { string objectName("bUiLdInG"); OptionalIddObject object = iddFile.getObject(objectName); ASSERT_TRUE(object); EXPECT_TRUE(iequals(object->name(), objectName)); EXPECT_EQ(static_cast<unsigned int>(8),object->nonextensibleFields().size()); EXPECT_TRUE(object->properties().unique); EXPECT_TRUE(object->properties().required); string fieldName("TeRrAiN"); OptionalIddField field = object->getField(fieldName); ASSERT_TRUE(field); EXPECT_TRUE(iequals(field->name(), fieldName)); EXPECT_EQ(field->keys().size(), static_cast<unsigned int>(5) ); EXPECT_TRUE(field->properties().stringDefault); EXPECT_EQ(*(field->properties().stringDefault), "Suburbs"); EXPECT_FALSE(field->properties().numericDefault); string keyName("SuBuRbS"); OptionalIddKey key = field->getKey(keyName); ASSERT_TRUE(key); EXPECT_FALSE(equals(key->name(), keyName)); EXPECT_TRUE(iequals(key->name(), keyName)); }
// test single object, one alpha field, no keys void IddFile_Version(const IddFile& iddFile) { string objectName("Version"); OptionalIddObject object = iddFile.getObject(objectName); ASSERT_TRUE(object); EXPECT_EQ(object->name(), objectName); EXPECT_EQ(static_cast<unsigned int>(1),object->nonextensibleFields().size()); string fieldName("Version Identifier"); OptionalIddField field = object->getField(fieldName); ASSERT_TRUE(field); EXPECT_EQ(field->name(), fieldName); EXPECT_TRUE(field->keys().empty()); }
TEST_F(IddFixture,IddKey_Getters) { OptionalIddObject optObject = IddFactory::instance().getObject(IddObjectType::Controller_OutdoorAir); ASSERT_TRUE(optObject); IddObject obj = *optObject; OptionalIddField f = obj.getField(Controller_OutdoorAirFields::EconomizerControlType); ASSERT_TRUE(f); EXPECT_TRUE(f->properties().type == IddFieldType::ChoiceType); IddKeyVector keys = f->keys(); EXPECT_EQ(static_cast<unsigned>(8),keys.size()); LOG(Info,"Keys for field " << Controller_OutdoorAirFields::EconomizerControlType << ", " << f->name() << ", of IddObject " << obj.name() << ":"); unsigned i = 0; BOOST_FOREACH(IddKey& key,keys) { LOG(Info," Key " << i << ": " << key.name()); ++i; }
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()); }