]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/test/tests.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / jsprim / node_modules / json-schema / test / tests.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/test/tests.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/test/tests.js
new file mode 100644 (file)
index 0000000..40eeda5
--- /dev/null
@@ -0,0 +1,95 @@
+var assert = require('assert');
+var vows = require('vows');
+var path = require('path');
+var fs = require('fs');
+
+var validate = require('../lib/validate').validate;
+
+
+var revision = 'draft-03';
+var schemaRoot = path.join(__dirname, '..', revision);
+var schemaNames = ['schema', 'hyper-schema', 'links', 'json-ref' ];
+var schemas = {};
+
+schemaNames.forEach(function(name) {
+    var file = path.join(schemaRoot, name);
+    schemas[name] = loadSchema(file);
+});
+
+schemaNames.forEach(function(name) {
+    var s, n = name+'-nsd', f = path.join(schemaRoot, name);
+    schemas[n] = loadSchema(f);
+    s = schemas[n];
+    delete s['$schema'];
+});
+
+function loadSchema(path) {
+    var data = fs.readFileSync(path, 'utf-8');
+    var schema = JSON.parse(data);
+    return schema;
+}
+
+function resultIsValid() {
+    return function(result) {
+        assert.isObject(result);
+        //assert.isBoolean(result.valid);
+        assert.equal(typeof(result.valid), 'boolean');
+        assert.isArray(result.errors);
+        for (var i = 0; i < result.errors.length; i++) {
+            assert.notEqual(result.errors[i], null, 'errors['+i+'] is null');
+        }
+    }
+}
+
+function assertValidates(doc, schema) {
+    var context = {};
+
+    context[': validate('+doc+', '+schema+')'] = {
+        topic: validate(schemas[doc], schemas[schema]),
+        'returns valid result': resultIsValid(),
+        'with valid=true': function(result) { assert.equal(result.valid, true); },
+        'and no errors':   function(result) {
+            // XXX work-around for bug in vows: [null] chokes it
+            if (result.errors[0] == null) assert.fail('(errors contains null)');
+            assert.length(result.errors, 0);
+        }
+    };
+
+    return context;
+}
+
+function assertSelfValidates(doc) {
+    var context = {};
+
+    context[': validate('+doc+')'] = {
+        topic: validate(schemas[doc]),
+        'returns valid result': resultIsValid(),
+        'with valid=true': function(result) { assert.equal(result.valid, true); },
+        'and no errors':   function(result) { assert.length(result.errors, 0); }
+    };
+
+    return context;
+}
+
+var suite = vows.describe('JSON Schema').addBatch({
+    'Core-NSD self-validates': assertSelfValidates('schema-nsd'),
+    'Core-NSD/Core-NSD': assertValidates('schema-nsd', 'schema-nsd'),
+    'Core-NSD/Core': assertValidates('schema-nsd', 'schema'),
+
+    'Core self-validates': assertSelfValidates('schema'),
+    'Core/Core': assertValidates('schema', 'schema'),
+
+    'Hyper-NSD self-validates': assertSelfValidates('hyper-schema-nsd'),
+    'Hyper self-validates': assertSelfValidates('hyper-schema'),
+    'Hyper/Hyper': assertValidates('hyper-schema', 'hyper-schema'),
+    'Hyper/Core': assertValidates('hyper-schema', 'schema'),
+
+    'Links-NSD self-validates': assertSelfValidates('links-nsd'),
+    'Links self-validates': assertSelfValidates('links'),
+    'Links/Hyper': assertValidates('links', 'hyper-schema'),
+    'Links/Core': assertValidates('links', 'schema'),
+
+    'Json-Ref self-validates': assertSelfValidates('json-ref'),
+    'Json-Ref/Hyper': assertValidates('json-ref', 'hyper-schema'),
+    'Json-Ref/Core': assertValidates('json-ref', 'schema')
+}).export(module);