diff options
Diffstat (limited to 'misc/openlayers/tests/node.js')
-rw-r--r-- | misc/openlayers/tests/node.js/mockdom.js | 104 | ||||
-rw-r--r-- | misc/openlayers/tests/node.js/node-tests.cfg | 12 | ||||
-rw-r--r-- | misc/openlayers/tests/node.js/node.js | 1 | ||||
-rw-r--r-- | misc/openlayers/tests/node.js/run-test.js | 26 | ||||
-rwxr-xr-x | misc/openlayers/tests/node.js/run.sh | 10 |
5 files changed, 153 insertions, 0 deletions
diff --git a/misc/openlayers/tests/node.js/mockdom.js b/misc/openlayers/tests/node.js/mockdom.js new file mode 100644 index 0000000..68c088a --- /dev/null +++ b/misc/openlayers/tests/node.js/mockdom.js @@ -0,0 +1,104 @@ +XMLHttpRequest = function() { + return { + 'open': function() { }, + 'send': function() { } + } +}; + +navigator = { + 'appName': 'mockdom', + 'userAgent': 'mockdom', + 'appVersion': '0.1', + 'language': 'en', + 'userLanguage': 'en' +} + +element = function(type) { + type = type || ""; + + return { + 'childNodes': [], + 'className': '', + 'tagName': type.toUpperCase(), + 'style': {}, + 'setAttribute': function(attr, value) { + this[attr] = value; + }, + 'appendChild': function(element) { + if (this.childNodes.length) { + this.childNodes[this.childNodes.length - 1].nextSibling = element; + } else { + this.firstChild = element; + } + element.parentNode = this; + this.childNodes.push(element); + + }, + 'removeChild': function(element) { + var i = this.childNodes.indexOf(element); + this.childNodes.splice(i, 1); + }, + 'addEventListener': function() { + }, + 'removeEventListener': function() { + }, + 'getElementsByTagName': function(name, externalList) { + var uc = name.toUpperCase(); + var list = externalList || []; + for(var i = 0; i < this.childNodes.length; i++) { + if (this.childNodes[i].tagName == uc) { + list.push(this.childNodes[i]); + } + this.childNodes[i].getElementsByTagName(name, list); + } + return list; + }, + 'getElementById': function(id) { + for(var i = 0; i < this.childNodes.length; i++) { + if (this.childNodes[i].id == id) { + return this.childNodes[i]; + } else { + var elem = this.childNodes[i].getElementById(id); + if (elem) { + return elem + } + } + } + } + } +}; + +document = element(); +document.createElement = function(type) { + return element(type); +}; +document.createTextNode = function(text) { + var e = element("Text"); + e.innerHTML = text; +} + +document.appendChild(element("head")); +document.body = element("body"); +document.appendChild(document.body); + +window = { + 'addEventListener': function() { + }, + 'getSelection': function() { + return { + collapseToStart: function() {} + } + }, + document: document, + navigator: navigator, + location: { + href: '#', + port: '', + hostname: 'openlayers.org', + host: 'openlayers.org', + proto: 'https' + } +}; +document.location = window.location; + +window.Function = Function; diff --git a/misc/openlayers/tests/node.js/node-tests.cfg b/misc/openlayers/tests/node.js/node-tests.cfg new file mode 100644 index 0000000..bc79baa --- /dev/null +++ b/misc/openlayers/tests/node.js/node-tests.cfg @@ -0,0 +1,12 @@ +# This build config is supposed to be used for the units tests with "mode=build" + +[first] +mockdom.js +[last] +node.js + +[include] + +[exclude] +OpenLayers.js +Firebug/firebug.js diff --git a/misc/openlayers/tests/node.js/node.js b/misc/openlayers/tests/node.js/node.js new file mode 100644 index 0000000..32249d1 --- /dev/null +++ b/misc/openlayers/tests/node.js/node.js @@ -0,0 +1 @@ +exports.OpenLayers = OpenLayers; diff --git a/misc/openlayers/tests/node.js/run-test.js b/misc/openlayers/tests/node.js/run-test.js new file mode 100644 index 0000000..7b0dd8b --- /dev/null +++ b/misc/openlayers/tests/node.js/run-test.js @@ -0,0 +1,26 @@ +// Requires: +/// 0. nodejs +// 1. jsdom installed (npm install jsdom) +// 2. A build profile with mockdom.js included in [first], and node.js +// inclded in [last], at ../../build/OpenLayers.js , like node-tests.js. +// 3. Run with node run-tests.js +// +// Missing: integration with a solid node.js testrunner. +var jsdom = require('jsdom'); +jsdom.env('<html><body></body></html>', function(errors, window) { + for (var i in window) { + if (i == "console") { + continue; + } + eval(i+"=window['"+i+"'];"); + } + OpenLayers = require("../../build/OpenLayers.js")['OpenLayers']; + var map = new OpenLayers.Map(document.createElement("map")); + map.addLayer(new OpenLayers.Layer("", {isBaseLayer:true})); + map.setCenter(new OpenLayers.LonLat(-71,42), 10); + var px = map.getPixelFromLonLat(map.getLonLatFromPixel(new OpenLayers.Pixel(100,100))); + console.log(px); + var px = map.getLonLatFromPixel(map.getPixelFromLonLat(new OpenLayers.LonLat(10,10))); + console.log(px); + +}); diff --git a/misc/openlayers/tests/node.js/run.sh b/misc/openlayers/tests/node.js/run.sh new file mode 100755 index 0000000..1434dd4 --- /dev/null +++ b/misc/openlayers/tests/node.js/run.sh @@ -0,0 +1,10 @@ +#!/bin/sh +cp mockdom.js node.js ../../lib +cp node-tests.cfg ../../build +cd ../../build +python build.py -c none node-tests +cd ../tests/node.js/ + +node run-test.js +rm ../../lib/mockdom.js +rm ../../lib/node.js |