public void SimpleTypeValidationValid()
        {
            var schema = SchemaBuilderTests.SimpleSchemaExample();

            var newObj = new
            {
                stringProp = "seattle, wa",
                urlProp    = "http://example.org",
                numberProp = 1234567901,
                dateProp   = DateTime.UtcNow,
                floatProp  = 123123.1231231231
            };

            string json = JsonConvert.SerializeObject(newObj, Settings);

            ValidationError[] errors;
            Assert.IsTrue(schema.ValidateJson(new JsonExample(json), out errors, null, null));
            Assert.AreEqual(0, errors.Length);
        }
        public void SimpleTypeValidationMissingProperty()
        {
            var schema = SchemaBuilderTests.SimpleSchemaExample();

            var newObj = new
            {
                stringProp = "seattle, wa",
                numberProp = 1234567901,
                dateProp   = DateTime.UtcNow,
                floatProp  = 123123.1231231231
            };

            string json = JsonConvert.SerializeObject(newObj, Settings);

            ValidationError[] errors;
            Assert.IsFalse(schema.ValidateJson(new JsonExample(json), out errors, null, null));
            Assert.AreEqual(1, errors.Length);
            Assert.AreEqual(ValidationErrorCode.RequiredPropertiesMissing, errors.First().Code);
        }
        public void SimpleTypeValidationWrongTypeArray()
        {
            var schema = SchemaBuilderTests.SimpleSchemaExample();

            var newObj = new
            {
                stringProp = new string[] { "one", "two", "three" },
                urlProp    = "http://example.org",
                numberProp = 1234567901,
                dateProp   = DateTime.UtcNow,
                floatProp  = 123123.1231231231
            };

            string json = JsonConvert.SerializeObject(newObj, Settings);

            ValidationError[] errors;
            Assert.IsFalse(schema.ValidateJson(new JsonExample(json), out errors, null, null));
            Assert.AreEqual(1, errors.Length);
            Assert.AreEqual(ValidationErrorCode.ExpectedNonArrayValue, errors.First().Code);
        }
        public void SimpleTypeValidationWrongPropertyType()
        {
            var schema = SchemaBuilderTests.SimpleSchemaExample();

            var newObj = new
            {
                stringProp = 1231234,
                urlProp    = "http://example.org",
                numberProp = "1234567901",
                dateProp   = DateTime.UtcNow,
                floatProp  = 123123.1231231231
            };

            string json = JsonConvert.SerializeObject(newObj, Settings);

            ValidationError[] errors;
            Assert.IsFalse(schema.ValidateJson(new JsonExample(json), out errors, null, null));
            Assert.IsTrue(errors.All(error => error.Code == ValidationErrorCode.ExpectedTypeDifferent));
            Assert.AreEqual(2, errors.Length, "Expected 2 errors in the response");
        }
        public void SimpleTypeValidationExtraProperty()
        {
            var schema = SchemaBuilderTests.SimpleSchemaExample();

            var newObj = new
            {
                stringProp = "seattle, wa",
                foobar     = "another value",
                urlProp    = "http://example.org",
                numberProp = 1234567901,
                dateProp   = DateTime.UtcNow,
                floatProp  = 123123.1231231231
            };

            string json = JsonConvert.SerializeObject(newObj, Settings);

            ValidationError[] errors;
            Assert.IsFalse(schema.ValidateJson(new JsonExample(json), out errors, null, null));
            Assert.AreEqual(1, errors.Length);
            Assert.AreEqual(ValidationErrorCode.AdditionalPropertyDetected, errors.First().Code);
        }