--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/toolkit/javascript/d3/test/env-xhr.js Thu Apr 10 14:20:23 2014 +0200
@@ -0,0 +1,56 @@
+var fs = require("fs");
+
+XMLHttpRequest = function() {
+ var self = this,
+ info = self._info = {},
+ headers = {},
+ url;
+
+ // TODO handle file system errors?
+
+ self.open = function(m, u, a) {
+ info.url = u;
+ info.async = a;
+ Object.freeze(info);
+ self.send = a ? read : readSync;
+ };
+
+ self.overrideMimeType = function(x) {
+ info.mimeType = x;
+ };
+
+ function read() {
+ fs.readFile(info.url, "binary", function(e, d) {
+ if (e) {
+ self.status = 404; // assumed
+ } else {
+ self.status = 200;
+ self.responseText = d;
+ self.responseXML = {_xml: d};
+ headers["Content-Length"] = d.length;
+ }
+ self.readyState = 4;
+ XMLHttpRequest._last = self;
+ if (self.onreadystatechange) self.onreadystatechange();
+ });
+ }
+
+ function readSync() {
+ try {
+ var d = fs.readFileSync(info.url, "binary");
+ self.status = 200;
+ self.responseText = d;
+ self.responseXML = {_xml: d};
+ headers["Content-Length"] = d.length;
+ } catch (e) {
+ self.status = 404; // assumed
+ }
+ self.readyState = 4;
+ XMLHttpRequest._last = self;
+ if (self.onreadystatechange) self.onreadystatechange();
+ }
+
+ self.getResponseHeader = function(n) {
+ return headers[n];
+ };
+};