Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(702)

Side by Side Diff: chrome/test/data/extensions/json_schema_test.js

Issue 9584021: Improve implementation of isInstanceOf in JSONSchemaValidator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove a test that cannot work anymore, update docs Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 function assert(truth) { 5 function assert(truth) {
6 if (!truth) 6 if (!truth)
7 throw new Error("Assertion failed."); 7 throw new Error("Assertion failed.");
8 } 8 }
9 9
10 function assertValid(type, instance, schema, types) { 10 function assertValid(type, instance, schema, types) {
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 assertValid("", 42, schema); 160 assertValid("", 42, schema);
161 assertNotValid("", "42", schema, 161 assertNotValid("", "42", schema,
162 [formatError("invalidType", ["number", "string"])]); 162 [formatError("invalidType", ["number", "string"])]);
163 163
164 // Make the derived schema more restrictive 164 // Make the derived schema more restrictive
165 parent.minimum = 43; 165 parent.minimum = 43;
166 assertNotValid("", 42, schema, [formatError("numberMinValue", [43])]); 166 assertNotValid("", 42, schema, [formatError("numberMinValue", [43])]);
167 assertValid("", 43, schema); 167 assertValid("", 43, schema);
168 } 168 }
169 169
170 function ClassA() {
171 this.a = "a";
172 }
173 function ClassB() {
174 }
175 ClassB.prototype = new ClassA();
176 function ClassC() {
177 this.a = "a";
178 }
179
180 function testObject() { 170 function testObject() {
181 var schema = { 171 var schema = {
182 properties: { 172 properties: {
183 "foo": { 173 "foo": {
184 type: "string" 174 type: "string"
185 }, 175 },
186 "bar": { 176 "bar": {
187 type: "integer" 177 type: "integer"
188 } 178 }
189 } 179 }
(...skipping 17 matching lines...) Expand all
207 [formatError("invalidType", ["boolean", "string"])]); 197 [formatError("invalidType", ["boolean", "string"])]);
208 198
209 schema.properties.bar.optional = true; 199 schema.properties.bar.optional = true;
210 assertValid("Object", {foo:"foo", bar:42}, schema); 200 assertValid("Object", {foo:"foo", bar:42}, schema);
211 assertValid("Object", {foo:"foo"}, schema); 201 assertValid("Object", {foo:"foo"}, schema);
212 assertNotValid("Object", {foo:"foo", bar:null}, schema, 202 assertNotValid("Object", {foo:"foo", bar:null}, schema,
213 [formatError("invalidType", ["integer", "null"])]); 203 [formatError("invalidType", ["integer", "null"])]);
214 assertValid("Object", {foo:"foo", bar:undefined}, schema); 204 assertValid("Object", {foo:"foo", bar:undefined}, schema);
215 assertNotValid("Object", {foo:"foo", bar:"42"}, schema, 205 assertNotValid("Object", {foo:"foo", bar:"42"}, schema,
216 [formatError("invalidType", ["integer", "string"])]); 206 [formatError("invalidType", ["integer", "string"])]);
217
218 var classASchema = {
219 properties: {
220 "a": { type: "string" }
221 },
222 isInstanceOf: "ClassA"
223 };
224
225 var classBSchema = {
226 properties: {},
227 isInstanceOf: "ClassB"
228 };
229
230 var a = new ClassA();
231 var b = new ClassB();
232 var c = new ClassC();
233
234 assertValid("Object", a, classASchema);
235 assertValid("Object", b, classBSchema);
236 assertValid("Object", b, classASchema);
237 assertNotValid("Object", c, classASchema,
238 [formatError("notInstance", [classASchema.isInstanceOf])]);
239 } 207 }
240 208
241 function testTypeReference() { 209 function testTypeReference() {
242 var referencedTypes = [ 210 var referencedTypes = [
243 { 211 {
244 id: "MinLengthString", 212 id: "MinLengthString",
245 type: "string", 213 type: "string",
246 minLength: 2 214 minLength: 2
247 }, 215 },
248 { 216 {
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 [formatError("invalidType", ["integer", "number"])]); 442 [formatError("invalidType", ["integer", "number"])]);
475 assertNotValid("Type", 1, {type: "boolean"}, 443 assertNotValid("Type", 1, {type: "boolean"},
476 [formatError("invalidType", ["boolean", "integer"])]); 444 [formatError("invalidType", ["boolean", "integer"])]);
477 assertNotValid("Type", false, {type: "null"}, 445 assertNotValid("Type", false, {type: "null"},
478 [formatError("invalidType", ["null", "boolean"])]); 446 [formatError("invalidType", ["null", "boolean"])]);
479 assertNotValid("Type", undefined, {type: "null"}, 447 assertNotValid("Type", undefined, {type: "null"},
480 [formatError("invalidType", ["null", "undefined"])]); 448 [formatError("invalidType", ["null", "undefined"])]);
481 assertNotValid("Type", {}, {type: "function"}, 449 assertNotValid("Type", {}, {type: "function"},
482 [formatError("invalidType", ["function", "object"])]); 450 [formatError("invalidType", ["function", "object"])]);
483 } 451 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698