Index: components/policy/core/common/schema_unittest.cc |
diff --git a/components/policy/core/common/schema_unittest.cc b/components/policy/core/common/schema_unittest.cc |
index 3e0fd261f758c1e47334a7a82ae757505ba69799..8a3ba90b1bd09876b9f0f98900fb11a9ddd50b6c 100644 |
--- a/components/policy/core/common/schema_unittest.cc |
+++ b/components/policy/core/common/schema_unittest.cc |
@@ -48,6 +48,23 @@ const char kTestSchema[] = |
" \"two\": { \"type\": \"integer\" }" |
" }," |
" \"additionalProperties\": { \"type\": \"string\" }" |
+ " }," |
+ " \"IntegerWithEnums\": {" |
+ " \"type\": \"integer\"," |
+ " \"enum\": [1, 2, 3]" |
+ " }," |
+ " \"IntegerWithEnumsGaps\": {" |
+ " \"type\": \"integer\"," |
+ " \"enum\": [10, 20, 30]" |
+ " }," |
+ " \"StringWithEnums\": {" |
+ " \"type\": \"string\"," |
+ " \"enum\": [\"one\", \"two\", \"three\"]" |
+ " }," |
+ " \"IntegerWithRange\": {" |
+ " \"type\": \"integer\"," |
+ " \"minimum\": 1," |
+ " \"maximum\": 3" |
" }" |
" }" |
"}"; |
@@ -238,19 +255,39 @@ TEST(SchemaTest, ValidSchema) { |
ASSERT_TRUE(subsub.valid()); |
EXPECT_EQ(base::Value::TYPE_STRING, subsub.type()); |
+ sub = schema.GetProperty("IntegerWithEnums"); |
+ ASSERT_TRUE(sub.valid()); |
+ ASSERT_EQ(base::Value::TYPE_INTEGER, sub.type()); |
+ |
+ sub = schema.GetProperty("IntegerWithEnumsGaps"); |
+ ASSERT_TRUE(sub.valid()); |
+ ASSERT_EQ(base::Value::TYPE_INTEGER, sub.type()); |
+ |
+ sub = schema.GetProperty("StringWithEnums"); |
+ ASSERT_TRUE(sub.valid()); |
+ ASSERT_EQ(base::Value::TYPE_STRING, sub.type()); |
+ |
+ sub = schema.GetProperty("IntegerWithRange"); |
+ ASSERT_TRUE(sub.valid()); |
+ ASSERT_EQ(base::Value::TYPE_INTEGER, sub.type()); |
+ |
struct { |
const char* expected_key; |
base::Value::Type expected_type; |
} kExpectedProperties[] = { |
- { "Array", base::Value::TYPE_LIST }, |
- { "ArrayOfArray", base::Value::TYPE_LIST }, |
- { "ArrayOfObjects", base::Value::TYPE_LIST }, |
- { "Boolean", base::Value::TYPE_BOOLEAN }, |
- { "Integer", base::Value::TYPE_INTEGER }, |
- { "Null", base::Value::TYPE_NULL }, |
- { "Number", base::Value::TYPE_DOUBLE }, |
- { "Object", base::Value::TYPE_DICTIONARY }, |
- { "String", base::Value::TYPE_STRING }, |
+ { "Array", base::Value::TYPE_LIST }, |
+ { "ArrayOfArray", base::Value::TYPE_LIST }, |
+ { "ArrayOfObjects", base::Value::TYPE_LIST }, |
+ { "Boolean", base::Value::TYPE_BOOLEAN }, |
+ { "Integer", base::Value::TYPE_INTEGER }, |
+ { "IntegerWithEnums", base::Value::TYPE_INTEGER }, |
+ { "IntegerWithEnumsGaps", base::Value::TYPE_INTEGER }, |
+ { "IntegerWithRange", base::Value::TYPE_INTEGER }, |
+ { "Null", base::Value::TYPE_NULL }, |
+ { "Number", base::Value::TYPE_DOUBLE }, |
+ { "Object", base::Value::TYPE_DICTIONARY }, |
+ { "String", base::Value::TYPE_STRING }, |
+ { "StringWithEnums", base::Value::TYPE_STRING }, |
}; |
Schema::Iterator it = schema.GetPropertiesIterator(); |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kExpectedProperties); ++i) { |
@@ -503,10 +540,50 @@ TEST(SchemaTest, Validate) { |
bundle.Set("Object", dict.DeepCopy()); |
} |
+ bundle.SetInteger("IntegerWithEnums", 1); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 20); |
+ bundle.SetString("StringWithEnums", "two"); |
+ bundle.SetInteger("IntegerWithRange", 3); |
+ |
EXPECT_TRUE(schema.Validate(bundle)); |
bundle.SetString("boom", "bang"); |
EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.Remove("boom", NULL); |
+ |
+ bundle.SetInteger("IntegerWithEnums", 0); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnums", 1); |
+ |
+ bundle.SetInteger("IntegerWithEnumsGaps", 0); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 9); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 10); |
+ EXPECT_TRUE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 11); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 19); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 21); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 29); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 30); |
+ EXPECT_TRUE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 31); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 100); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithEnumsGaps", 20); |
+ |
+ bundle.SetString("StringWithEnums", "FOUR"); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetString("StringWithEnums", "two"); |
+ |
+ bundle.SetInteger("IntegerWithRange", 4); |
+ EXPECT_FALSE(schema.Validate(bundle)); |
+ bundle.SetInteger("IntegerWithRange", 3); |
} |
TEST(SchemaTest, InvalidReferences) { |