Index: chrome/common/json_schema/json_schema_validator_unittest_base.cc |
diff --git a/chrome/common/json_schema/json_schema_validator_unittest_base.cc b/chrome/common/json_schema/json_schema_validator_unittest_base.cc |
deleted file mode 100644 |
index 0f87a48e45e332910d8e9a5cb39e2acb52e2acfd..0000000000000000000000000000000000000000 |
--- a/chrome/common/json_schema/json_schema_validator_unittest_base.cc |
+++ /dev/null |
@@ -1,726 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/common/json_schema/json_schema_validator_unittest_base.h" |
- |
-#include <cfloat> |
-#include <cmath> |
-#include <limits> |
- |
-#include "base/file_util.h" |
-#include "base/json/json_file_value_serializer.h" |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/path_service.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/values.h" |
-#include "chrome/common/chrome_paths.h" |
-#include "chrome/common/json_schema/json_schema_constants.h" |
-#include "chrome/common/json_schema/json_schema_validator.h" |
- |
-namespace schema = json_schema_constants; |
- |
-namespace { |
- |
-#define TEST_SOURCE base::StringPrintf("%s:%i", __FILE__, __LINE__) |
- |
-base::Value* LoadValue(const std::string& filename) { |
- base::FilePath path; |
- PathService::Get(chrome::DIR_TEST_DATA, &path); |
- path = path.AppendASCII("json_schema_validator").AppendASCII(filename); |
- EXPECT_TRUE(base::PathExists(path)); |
- |
- std::string error_message; |
- JSONFileValueSerializer serializer(path); |
- base::Value* result = serializer.Deserialize(NULL, &error_message); |
- if (!result) |
- ADD_FAILURE() << "Could not parse JSON: " << error_message; |
- return result; |
-} |
- |
-base::Value* LoadValue(const std::string& filename, base::Value::Type type) { |
- scoped_ptr<base::Value> result(LoadValue(filename)); |
- if (!result.get()) |
- return NULL; |
- if (!result->IsType(type)) { |
- ADD_FAILURE() << "Expected type " << type << ", got: " << result->GetType(); |
- return NULL; |
- } |
- return result.release(); |
-} |
- |
-base::ListValue* LoadList(const std::string& filename) { |
- return static_cast<base::ListValue*>( |
- LoadValue(filename, base::Value::TYPE_LIST)); |
-} |
- |
-base::DictionaryValue* LoadDictionary(const std::string& filename) { |
- return static_cast<base::DictionaryValue*>( |
- LoadValue(filename, base::Value::TYPE_DICTIONARY)); |
-} |
- |
-} // namespace |
- |
- |
-JSONSchemaValidatorTestBase::JSONSchemaValidatorTestBase( |
- JSONSchemaValidatorTestBase::ValidatorType type) |
- : type_(type) { |
-} |
- |
-void JSONSchemaValidatorTestBase::RunTests() { |
- TestComplex(); |
- TestStringPattern(); |
- TestEnum(); |
- TestChoices(); |
- TestExtends(); |
- TestObject(); |
- TestTypeReference(); |
- TestArrayTuple(); |
- TestArrayNonTuple(); |
- TestString(); |
- TestNumber(); |
- TestTypeClassifier(); |
- TestTypes(); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestComplex() { |
- scoped_ptr<base::DictionaryValue> schema( |
- LoadDictionary("complex_schema.json")); |
- scoped_ptr<base::ListValue> instance(LoadList("complex_instance.json")); |
- |
- ASSERT_TRUE(schema.get()); |
- ASSERT_TRUE(instance.get()); |
- |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- instance->Remove(instance->GetSize() - 1, NULL); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- instance->Append(new base::DictionaryValue()); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "1", |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, |
- schema::kNumber, |
- schema::kObject)); |
- instance->Remove(instance->GetSize() - 1, NULL); |
- |
- base::DictionaryValue* item = NULL; |
- ASSERT_TRUE(instance->GetDictionary(0, &item)); |
- item->SetString("url", "xxxxxxxxxxx"); |
- |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, |
- "0.url", |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kStringMaxLength, "10")); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestStringPattern() { |
- // Regex patterns not supported in CPP validator. |
- if (type_ == CPP) |
- return; |
- |
- scoped_ptr<base::DictionaryValue> schema(new base::DictionaryValue()); |
- schema->SetString(schema::kType, schema::kString); |
- schema->SetString(schema::kPattern, "foo+"); |
- |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("foo")).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("foooooo")).get(), |
- schema.get(), NULL); |
- ExpectNotValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("bar")).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kStringPattern, "foo+")); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestEnum() { |
- scoped_ptr<base::DictionaryValue> schema(LoadDictionary("enum_schema.json")); |
- |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("foo")).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(false)).get(), |
- schema.get(), NULL); |
- |
- ExpectNotValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("42")).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::kInvalidEnum); |
- ExpectNotValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(base::Value::CreateNullValue()).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::kInvalidEnum); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestChoices() { |
- scoped_ptr<base::DictionaryValue> schema( |
- LoadDictionary("choices_schema.json")); |
- |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(base::Value::CreateNullValue()).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get(), |
- schema.get(), NULL); |
- |
- scoped_ptr<base::DictionaryValue> instance(new base::DictionaryValue()); |
- instance->SetString("foo", "bar"); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- |
- ExpectNotValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("foo")).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::kInvalidChoice); |
- ExpectNotValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::ListValue()).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::kInvalidChoice); |
- |
- instance->SetInteger("foo", 42); |
- ExpectNotValid(TEST_SOURCE, |
- instance.get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::kInvalidChoice); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestExtends() { |
- // TODO(aa): JS only |
-} |
- |
-void JSONSchemaValidatorTestBase::TestObject() { |
- scoped_ptr<base::DictionaryValue> schema(new base::DictionaryValue()); |
- schema->SetString(schema::kType, schema::kObject); |
- schema->SetString("properties.foo.type", schema::kString); |
- schema->SetString("properties.bar.type", schema::kInteger); |
- |
- scoped_ptr<base::DictionaryValue> instance(new base::DictionaryValue()); |
- instance->SetString("foo", "foo"); |
- instance->SetInteger("bar", 42); |
- |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- |
- instance->SetBoolean("extra", true); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, |
- "extra", JSONSchemaValidator::kUnexpectedProperty); |
- |
- instance->Remove("extra", NULL); |
- instance->Remove("bar", NULL); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "bar", |
- JSONSchemaValidator::kObjectPropertyIsRequired); |
- |
- instance->SetString("bar", "42"); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "bar", |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, |
- schema::kInteger, |
- schema::kString)); |
- |
- base::DictionaryValue* additional_properties = new base::DictionaryValue(); |
- additional_properties->SetString(schema::kType, schema::kAny); |
- schema->Set(schema::kAdditionalProperties, additional_properties); |
- |
- instance->SetInteger("bar", 42); |
- instance->SetBoolean("extra", true); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- |
- instance->SetString("extra", "foo"); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- |
- additional_properties->SetString(schema::kType, schema::kBoolean); |
- instance->SetBoolean("extra", true); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- |
- instance->SetString("extra", "foo"); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, |
- "extra", JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, |
- schema::kBoolean, |
- schema::kString)); |
- |
- base::DictionaryValue* properties = NULL; |
- base::DictionaryValue* bar_property = NULL; |
- ASSERT_TRUE(schema->GetDictionary(schema::kProperties, &properties)); |
- ASSERT_TRUE(properties->GetDictionary("bar", &bar_property)); |
- |
- bar_property->SetBoolean(schema::kOptional, true); |
- instance->Remove("extra", NULL); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- instance->Remove("bar", NULL); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- instance->Set("bar", base::Value::CreateNullValue()); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, |
- "bar", JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, |
- schema::kInteger, |
- schema::kNull)); |
- instance->SetString("bar", "42"); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, |
- "bar", JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, |
- schema::kInteger, |
- schema::kString)); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestTypeReference() { |
- scoped_ptr<base::ListValue> types(LoadList("reference_types.json")); |
- ASSERT_TRUE(types.get()); |
- |
- scoped_ptr<base::DictionaryValue> schema(new base::DictionaryValue()); |
- schema->SetString(schema::kType, schema::kObject); |
- schema->SetString("properties.foo.type", schema::kString); |
- schema->SetString("properties.bar.$ref", "Max10Int"); |
- schema->SetString("properties.baz.$ref", "MinLengthString"); |
- |
- scoped_ptr<base::DictionaryValue> schema_inline(new base::DictionaryValue()); |
- schema_inline->SetString(schema::kType, schema::kObject); |
- schema_inline->SetString("properties.foo.type", schema::kString); |
- schema_inline->SetString("properties.bar.id", "NegativeInt"); |
- schema_inline->SetString("properties.bar.type", schema::kInteger); |
- schema_inline->SetInteger("properties.bar.maximum", 0); |
- schema_inline->SetString("properties.baz.$ref", "NegativeInt"); |
- |
- scoped_ptr<base::DictionaryValue> instance(new base::DictionaryValue()); |
- instance->SetString("foo", "foo"); |
- instance->SetInteger("bar", 4); |
- instance->SetString("baz", "ab"); |
- |
- scoped_ptr<base::DictionaryValue> instance_inline( |
- new base::DictionaryValue()); |
- instance_inline->SetString("foo", "foo"); |
- instance_inline->SetInteger("bar", -4); |
- instance_inline->SetInteger("baz", -2); |
- |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), types.get()); |
- ExpectValid(TEST_SOURCE, instance_inline.get(), schema_inline.get(), NULL); |
- |
- // Validation failure, but successful schema reference. |
- instance->SetString("baz", "a"); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), types.get(), |
- "baz", JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kStringMinLength, "2")); |
- |
- instance_inline->SetInteger("bar", 20); |
- ExpectNotValid(TEST_SOURCE, instance_inline.get(), schema_inline.get(), NULL, |
- "bar", JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kNumberMaximum, "0")); |
- |
- // Remove MinLengthString type. |
- types->Remove(types->GetSize() - 1, NULL); |
- instance->SetString("baz", "ab"); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), types.get(), |
- "bar", JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kUnknownTypeReference, |
- "Max10Int")); |
- |
- // Remove internal type "NegativeInt". |
- schema_inline->Remove("properties.bar", NULL); |
- instance_inline->Remove("bar", NULL); |
- ExpectNotValid(TEST_SOURCE, instance_inline.get(), schema_inline.get(), NULL, |
- "baz", JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kUnknownTypeReference, |
- "NegativeInt")); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestArrayTuple() { |
- scoped_ptr<base::DictionaryValue> schema( |
- LoadDictionary("array_tuple_schema.json")); |
- ASSERT_TRUE(schema.get()); |
- |
- scoped_ptr<base::ListValue> instance(new base::ListValue()); |
- instance->Append(new base::StringValue("42")); |
- instance->Append(new base::FundamentalValue(42)); |
- |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- |
- instance->Append(new base::StringValue("anything")); |
- ExpectNotValid(TEST_SOURCE, |
- instance.get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kArrayMaxItems, "2")); |
- |
- instance->Remove(1, NULL); |
- instance->Remove(1, NULL); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "1", |
- JSONSchemaValidator::kArrayItemRequired); |
- |
- instance->Set(0, new base::FundamentalValue(42)); |
- instance->Append(new base::FundamentalValue(42)); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "0", |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, |
- schema::kString, |
- schema::kInteger)); |
- |
- base::DictionaryValue* additional_properties = new base::DictionaryValue(); |
- additional_properties->SetString(schema::kType, schema::kAny); |
- schema->Set(schema::kAdditionalProperties, additional_properties); |
- instance->Set(0, new base::StringValue("42")); |
- instance->Append(new base::StringValue("anything")); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- instance->Set(2, new base::ListValue()); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- |
- additional_properties->SetString(schema::kType, schema::kBoolean); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "2", |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, |
- schema::kBoolean, |
- schema::kArray)); |
- instance->Set(2, new base::FundamentalValue(false)); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- |
- base::ListValue* items_schema = NULL; |
- base::DictionaryValue* item0_schema = NULL; |
- ASSERT_TRUE(schema->GetList(schema::kItems, &items_schema)); |
- ASSERT_TRUE(items_schema->GetDictionary(0, &item0_schema)); |
- item0_schema->SetBoolean(schema::kOptional, true); |
- instance->Remove(2, NULL); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- // TODO(aa): I think this is inconsistent with the handling of NULL+optional |
- // for objects. |
- instance->Set(0, base::Value::CreateNullValue()); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- instance->Set(0, new base::FundamentalValue(42)); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "0", |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, |
- schema::kString, |
- schema::kInteger)); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestArrayNonTuple() { |
- scoped_ptr<base::DictionaryValue> schema(new base::DictionaryValue()); |
- schema->SetString(schema::kType, schema::kArray); |
- schema->SetString("items.type", schema::kString); |
- schema->SetInteger(schema::kMinItems, 2); |
- schema->SetInteger(schema::kMaxItems, 3); |
- |
- scoped_ptr<base::ListValue> instance(new base::ListValue()); |
- instance->Append(new base::StringValue("x")); |
- instance->Append(new base::StringValue("x")); |
- |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- instance->Append(new base::StringValue("x")); |
- ExpectValid(TEST_SOURCE, instance.get(), schema.get(), NULL); |
- |
- instance->Append(new base::StringValue("x")); |
- ExpectNotValid(TEST_SOURCE, |
- instance.get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kArrayMaxItems, "3")); |
- instance->Remove(1, NULL); |
- instance->Remove(1, NULL); |
- instance->Remove(1, NULL); |
- ExpectNotValid(TEST_SOURCE, |
- instance.get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kArrayMinItems, "2")); |
- |
- instance->Remove(1, NULL); |
- instance->Append(new base::FundamentalValue(42)); |
- ExpectNotValid(TEST_SOURCE, instance.get(), schema.get(), NULL, "1", |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, |
- schema::kString, |
- schema::kInteger)); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestString() { |
- scoped_ptr<base::DictionaryValue> schema(new base::DictionaryValue()); |
- schema->SetString(schema::kType, schema::kString); |
- schema->SetInteger(schema::kMinLength, 1); |
- schema->SetInteger(schema::kMaxLength, 10); |
- |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("x")).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>( |
- new base::StringValue("xxxxxxxxxx")).get(), |
- schema.get(), NULL); |
- |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue(std::string())).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kStringMinLength, "1")); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("xxxxxxxxxxx")).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kStringMaxLength, "10")); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestNumber() { |
- scoped_ptr<base::DictionaryValue> schema(new base::DictionaryValue()); |
- schema->SetString(schema::kType, schema::kNumber); |
- schema->SetInteger(schema::kMinimum, 1); |
- schema->SetInteger(schema::kMaximum, 100); |
- schema->SetInteger("maxDecimal", 2); |
- |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(1)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(50)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(100)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(88.88)).get(), |
- schema.get(), NULL); |
- |
- ExpectNotValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(0.5)).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kNumberMinimum, "1")); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(100.1)).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kNumberMaximum, "100")); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestTypeClassifier() { |
- EXPECT_EQ(std::string(schema::kBoolean), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>( |
- new base::FundamentalValue(true)).get())); |
- EXPECT_EQ(std::string(schema::kBoolean), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>( |
- new base::FundamentalValue(false)).get())); |
- |
- // It doesn't matter whether the C++ type is 'integer' or 'real'. If the |
- // number is integral and within the representable range of integers in |
- // double, it's classified as 'integer'. |
- EXPECT_EQ(std::string(schema::kInteger), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get())); |
- EXPECT_EQ(std::string(schema::kInteger), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>(new base::FundamentalValue(0)).get())); |
- EXPECT_EQ(std::string(schema::kInteger), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get())); |
- EXPECT_EQ(std::string(schema::kInteger), |
- JSONSchemaValidator::GetJSONSchemaType(scoped_ptr<base::Value>( |
- new base::FundamentalValue(pow(2.0, DBL_MANT_DIG))).get())); |
- EXPECT_EQ(std::string(schema::kInteger), |
- JSONSchemaValidator::GetJSONSchemaType(scoped_ptr<base::Value>( |
- new base::FundamentalValue(pow(-2.0, DBL_MANT_DIG))).get())); |
- |
- // "number" is only used for non-integral numbers, or numbers beyond what |
- // double can accurately represent. |
- EXPECT_EQ(std::string(schema::kNumber), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>( |
- new base::FundamentalValue(88.8)).get())); |
- EXPECT_EQ(std::string(schema::kNumber), |
- JSONSchemaValidator::GetJSONSchemaType(scoped_ptr<base::Value>( |
- new base::FundamentalValue(pow(2.0, DBL_MANT_DIG) * 2)).get())); |
- EXPECT_EQ(std::string(schema::kNumber), |
- JSONSchemaValidator::GetJSONSchemaType(scoped_ptr<base::Value>( |
- new base::FundamentalValue( |
- pow(-2.0, DBL_MANT_DIG) * 2)).get())); |
- |
- EXPECT_EQ(std::string(schema::kString), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>(new base::StringValue("foo")).get())); |
- EXPECT_EQ(std::string(schema::kArray), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>(new base::ListValue()).get())); |
- EXPECT_EQ(std::string(schema::kObject), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>(new base::DictionaryValue()).get())); |
- EXPECT_EQ(std::string(schema::kNull), |
- JSONSchemaValidator::GetJSONSchemaType( |
- scoped_ptr<base::Value>(base::Value::CreateNullValue()).get())); |
-} |
- |
-void JSONSchemaValidatorTestBase::TestTypes() { |
- scoped_ptr<base::DictionaryValue> schema(new base::DictionaryValue()); |
- |
- // valid |
- schema->SetString(schema::kType, schema::kObject); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::DictionaryValue()).get(), |
- schema.get(), NULL); |
- |
- schema->SetString(schema::kType, schema::kArray); |
- ExpectValid(TEST_SOURCE, scoped_ptr<base::Value>(new base::ListValue()).get(), |
- schema.get(), NULL); |
- |
- schema->SetString(schema::kType, schema::kString); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("foobar")).get(), |
- schema.get(), NULL); |
- |
- schema->SetString(schema::kType, schema::kNumber); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(88.8)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(0)).get(), |
- schema.get(), NULL); |
- |
- schema->SetString(schema::kType, schema::kInteger); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(0)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>( |
- new base::FundamentalValue(pow(2.0, DBL_MANT_DIG))).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>( |
- new base::FundamentalValue(pow(-2.0, DBL_MANT_DIG))).get(), |
- schema.get(), NULL); |
- |
- schema->SetString(schema::kType, schema::kBoolean); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(false)).get(), |
- schema.get(), NULL); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(true)).get(), |
- schema.get(), NULL); |
- |
- schema->SetString(schema::kType, schema::kNull); |
- ExpectValid(TEST_SOURCE, |
- scoped_ptr<base::Value>(base::Value::CreateNullValue()).get(), |
- schema.get(), NULL); |
- |
- // not valid |
- schema->SetString(schema::kType, schema::kObject); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::ListValue()).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, schema::kObject, schema::kArray)); |
- |
- schema->SetString(schema::kType, schema::kObject); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(base::Value::CreateNullValue()).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, schema::kObject, schema::kNull)); |
- |
- schema->SetString(schema::kType, schema::kArray); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, schema::kArray, schema::kInteger)); |
- |
- schema->SetString(schema::kType, schema::kString); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(42)).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage(JSONSchemaValidator::kInvalidType, |
- schema::kString, |
- schema::kInteger)); |
- |
- schema->SetString(schema::kType, schema::kNumber); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::StringValue("42")).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, schema::kNumber, schema::kString)); |
- |
- schema->SetString(schema::kType, schema::kInteger); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(88.8)).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::kInvalidTypeIntegerNumber); |
- |
- schema->SetString(schema::kType, schema::kBoolean); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(1)).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage(JSONSchemaValidator::kInvalidType, |
- schema::kBoolean, |
- schema::kInteger)); |
- |
- schema->SetString(schema::kType, schema::kNull); |
- ExpectNotValid( |
- TEST_SOURCE, |
- scoped_ptr<base::Value>(new base::FundamentalValue(false)).get(), |
- schema.get(), |
- NULL, |
- std::string(), |
- JSONSchemaValidator::FormatErrorMessage( |
- JSONSchemaValidator::kInvalidType, schema::kNull, schema::kBoolean)); |
-} |