Some node.js test hacking.
git-svn-id: http://svn.openlayers.org/trunk/openlayers@11551 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
106
tests/node.js/mockdom.js
Normal file
106
tests/node.js/mockdom.js
Normal file
@@ -0,0 +1,106 @@
|
||||
XMLHttpRequest = function() {
|
||||
return {
|
||||
'open': function() { },
|
||||
'send': function() { }
|
||||
}
|
||||
};
|
||||
|
||||
alert = print;
|
||||
|
||||
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;
|
||||
12
tests/node.js/node-tests.cfg
Normal file
12
tests/node.js/node-tests.cfg
Normal file
@@ -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
|
||||
1
tests/node.js/node.js
Normal file
1
tests/node.js/node.js
Normal file
@@ -0,0 +1 @@
|
||||
exports.OpenLayers = OpenLayers;
|
||||
26
tests/node.js/run-test.js
Normal file
26
tests/node.js/run-test.js
Normal file
@@ -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);
|
||||
|
||||
});
|
||||
10
tests/node.js/run.sh
Executable file
10
tests/node.js/run.sh
Executable file
@@ -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
|
||||
Reference in New Issue
Block a user