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 cb0b0868bcb0e3a2037a551155295d84b02062df..1df338a25b00b123b69251a7a30dfb5a2527a3ae 100644 |
--- a/components/policy/core/common/schema_unittest.cc |
+++ b/components/policy/core/common/schema_unittest.cc |
@@ -15,12 +15,11 @@ namespace { |
bool ParseFails(const std::string& content) { |
std::string error; |
- scoped_ptr<SchemaOwner> schema = SchemaOwner::Parse(content, &error); |
- if (schema) |
- EXPECT_TRUE(schema->schema().valid()); |
- else |
- EXPECT_FALSE(error.empty()); |
- return !schema; |
+ Schema schema = Schema::Parse(content, &error); |
+ if (schema.valid()) |
+ return false; |
+ EXPECT_FALSE(error.empty()); |
+ return true; |
} |
} // namespace |
@@ -72,9 +71,46 @@ TEST(SchemaTest, InvalidSchemas) { |
"}")); |
} |
+TEST(SchemaTest, Ownership) { |
+ std::string error; |
+ Schema schema = Schema::Parse( |
+ "{" |
+ OBJECT_TYPE "," |
+ "\"properties\": {" |
+ "\"sub\": {" |
+ "\"type\": \"object\"," |
+ "\"properties\": {" |
+ "\"subsub\": { \"type\": \"string\" }" |
+ "}" |
+ "}" |
+ "}" |
+ "}", &error); |
+ ASSERT_TRUE(schema.valid()) << error; |
+ ASSERT_EQ(base::Value::TYPE_DICTIONARY, schema.type()); |
+ |
+ schema = schema.GetKnownProperty("sub"); |
+ ASSERT_TRUE(schema.valid()); |
+ ASSERT_EQ(base::Value::TYPE_DICTIONARY, schema.type()); |
+ |
+ { |
+ Schema::Iterator it = schema.GetPropertiesIterator(); |
+ ASSERT_FALSE(it.IsAtEnd()); |
+ EXPECT_STREQ("subsub", it.key()); |
+ |
+ schema = it.schema(); |
+ it.Advance(); |
+ EXPECT_TRUE(it.IsAtEnd()); |
+ } |
+ |
+ ASSERT_TRUE(schema.valid()); |
+ EXPECT_EQ(base::Value::TYPE_STRING, schema.type()); |
+ |
+ // This test shouldn't leak nor use invalid memory. |
+} |
+ |
TEST(SchemaTest, ValidSchema) { |
std::string error; |
- scoped_ptr<SchemaOwner> policy_schema = SchemaOwner::Parse( |
+ Schema schema = Schema::Parse( |
"{" |
OBJECT_TYPE "," |
"\"properties\": {" |
@@ -114,10 +150,8 @@ TEST(SchemaTest, ValidSchema) { |
" }" |
"}" |
"}", &error); |
- ASSERT_TRUE(policy_schema) << error; |
- ASSERT_TRUE(policy_schema->schema().valid()); |
+ ASSERT_TRUE(schema.valid()) << error; |
- Schema schema = policy_schema->schema(); |
ASSERT_EQ(base::Value::TYPE_DICTIONARY, schema.type()); |
EXPECT_FALSE(schema.GetProperty("invalid").valid()); |
@@ -213,13 +247,12 @@ TEST(SchemaTest, ValidSchema) { |
TEST(SchemaTest, Lookups) { |
std::string error; |
- scoped_ptr<SchemaOwner> policy_schema = SchemaOwner::Parse( |
+ |
+ Schema schema = Schema::Parse( |
"{" |
OBJECT_TYPE |
"}", &error); |
- ASSERT_TRUE(policy_schema) << error; |
- Schema schema = policy_schema->schema(); |
- ASSERT_TRUE(schema.valid()); |
+ ASSERT_TRUE(schema.valid()) << error; |
ASSERT_EQ(base::Value::TYPE_DICTIONARY, schema.type()); |
// This empty schema should never find named properties. |
@@ -227,23 +260,21 @@ TEST(SchemaTest, Lookups) { |
EXPECT_FALSE(schema.GetKnownProperty("xyz").valid()); |
EXPECT_TRUE(schema.GetPropertiesIterator().IsAtEnd()); |
- policy_schema = SchemaOwner::Parse( |
+ schema = Schema::Parse( |
"{" |
OBJECT_TYPE "," |
"\"properties\": {" |
" \"Boolean\": { \"type\": \"boolean\" }" |
"}" |
"}", &error); |
- ASSERT_TRUE(policy_schema) << error; |
- schema = policy_schema->schema(); |
- ASSERT_TRUE(schema.valid()); |
+ ASSERT_TRUE(schema.valid()) << error; |
ASSERT_EQ(base::Value::TYPE_DICTIONARY, schema.type()); |
EXPECT_FALSE(schema.GetKnownProperty("").valid()); |
EXPECT_FALSE(schema.GetKnownProperty("xyz").valid()); |
EXPECT_TRUE(schema.GetKnownProperty("Boolean").valid()); |
- policy_schema = SchemaOwner::Parse( |
+ schema = Schema::Parse( |
"{" |
OBJECT_TYPE "," |
"\"properties\": {" |
@@ -254,9 +285,7 @@ TEST(SchemaTest, Lookups) { |
" \"aba\" : { \"type\": \"integer\" }" |
"}" |
"}", &error); |
- ASSERT_TRUE(policy_schema) << error; |
- schema = policy_schema->schema(); |
- ASSERT_TRUE(schema.valid()); |
+ ASSERT_TRUE(schema.valid()) << error; |
ASSERT_EQ(base::Value::TYPE_DICTIONARY, schema.type()); |
EXPECT_FALSE(schema.GetKnownProperty("").valid()); |
@@ -310,9 +339,7 @@ TEST(SchemaTest, Wrap) { |
kProperties, |
}; |
- scoped_ptr<SchemaOwner> policy_schema = SchemaOwner::Wrap(&kData); |
- ASSERT_TRUE(policy_schema); |
- Schema schema = policy_schema->schema(); |
+ Schema schema = Schema::Wrap(&kData); |
ASSERT_TRUE(schema.valid()); |
EXPECT_EQ(base::Value::TYPE_DICTIONARY, schema.type()); |