/** * Test EnumSchemaItem * * Create SchemaItem with default value. Method setDefaultValue should return true, * SmartObject should contain default value. * Not Enum SmartObject should converted to intObject and setted up by the default value. **/ TEST_F(EnumSchemaItemTest, test_item_with_default_value) { SmartObject obj; ISchemaItemPtr item = TEnumSchemaItem<TestType::eType>::create(testEnum, TSchemaItemParameter<TestType::eType>(TestType::FACTORY_DEFAULTS)); //Object - valid enum obj = TestType::BLUETOOTH_OFF; int resultType = item->validate(obj); EXPECT_EQ(Errors::OK, resultType); bool resDefault = item->setDefaultValue(obj); EXPECT_TRUE(resDefault); EXPECT_EQ(TestType::FACTORY_DEFAULTS, obj.asInt()); //Obj - bool obj = true; resultType = item->validate(obj); EXPECT_EQ(Errors::INVALID_VALUE, resultType); resDefault = item->setDefaultValue(obj); EXPECT_TRUE(resDefault); EXPECT_EQ(TestType::FACTORY_DEFAULTS, obj.asInt()); //Object - number obj = 3.1415926; resultType = item->validate(obj); EXPECT_EQ(Errors::INVALID_VALUE, resultType); resDefault = item->setDefaultValue(obj); EXPECT_TRUE(resDefault); EXPECT_EQ(TestType::FACTORY_DEFAULTS, obj.asInt()); //Object - string obj = "Some string"; resultType = item->validate(obj); EXPECT_EQ(Errors::INVALID_VALUE, resultType); resDefault = item->setDefaultValue(obj); EXPECT_TRUE(resDefault); EXPECT_EQ(TestType::FACTORY_DEFAULTS, obj.asInt()); }
/** * Test EnumSchemaItem with default value * * Create SchemaItem without default value. Method setDefaultValue should return false, * SmartObject should contain previous value. **/ TEST_F(EnumSchemaItemTest, test_item_without_default_value) { SmartObject obj; ISchemaItemPtr item = TEnumSchemaItem<TestType::eType>::create(testEnum, TSchemaItemParameter<TestType::eType>()); //Object - valid enum obj = TestType::BLUETOOTH_OFF; int resultType = item->validate(obj); EXPECT_EQ(Errors::OK, resultType); bool resDefault = item->setDefaultValue(obj); EXPECT_FALSE(resDefault); EXPECT_EQ(TestType::BLUETOOTH_OFF, obj.asInt()); //Obj - bool obj = true; resultType = item->validate(obj); EXPECT_EQ(Errors::INVALID_VALUE, resultType); resDefault = item->setDefaultValue(obj); EXPECT_FALSE(resDefault); EXPECT_TRUE(obj.asBool()); //Object - number obj = 3.1415926; resultType = item->validate(obj); EXPECT_EQ(Errors::INVALID_VALUE, resultType); resDefault = item->setDefaultValue(obj); EXPECT_FALSE(resDefault); EXPECT_EQ(3.1415926, obj.asDouble()); //Object - string obj = "Some string"; resultType = item->validate(obj); EXPECT_EQ(Errors::INVALID_VALUE, resultType); resDefault = item->setDefaultValue(obj); EXPECT_FALSE(resDefault); EXPECT_EQ(std::string("Some string"), obj.asString()); //Object - int in range of enum obj = 6; resultType = item->validate(obj); EXPECT_EQ(Errors::OK, resultType); //Object - int out of enum range obj = 15; resultType = item->validate(obj); EXPECT_EQ(Errors::OUT_OF_RANGE, resultType); }
/** * Test apply and unapply EnumSchemaItem **/ TEST_F(EnumSchemaItemTest, test_apply_unapply_schema) { SmartObject obj; ISchemaItemPtr item = TEnumSchemaItem<TestType::eType>::create(testEnum, TSchemaItemParameter<TestType::eType>(TestType::FACTORY_DEFAULTS)); //Object - valid enum obj = TestType::BLUETOOTH_OFF; int resultType = item->validate(obj); EXPECT_EQ(Errors::OK, resultType); bool resDefault = item->setDefaultValue(obj); EXPECT_TRUE(resDefault); EXPECT_EQ(TestType::FACTORY_DEFAULTS, obj.asInt()); item->unapplySchema(obj); resultType = item->validate(obj); EXPECT_EQ(Errors::INVALID_VALUE, resultType); EXPECT_EQ(std::string("FACTORY_DEFAULTS"), obj.asString()); item->applySchema(obj); resultType = item->validate(obj); EXPECT_EQ(Errors::OK, resultType); EXPECT_EQ(TestType::FACTORY_DEFAULTS, obj.asInt()); obj = "TOO_MANY_REQUESTS"; item->applySchema(obj); resultType = item->validate(obj); EXPECT_EQ(Errors::OK, resultType); EXPECT_EQ(TestType::TOO_MANY_REQUESTS, obj.asInt()); obj = "ENOUGH_REQUESTS"; item->applySchema(obj); resultType = item->validate(obj); EXPECT_EQ(Errors::INVALID_VALUE, resultType); EXPECT_EQ(std::string("ENOUGH_REQUESTS"), obj.asString()); }