rob@77
|
1 var sys = require("util")
|
rob@77
|
2 , assert = require("assert")
|
rob@77
|
3 , http = require("http")
|
rob@77
|
4 , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest
|
rob@77
|
5 , xhr;
|
rob@77
|
6
|
rob@77
|
7 // Test server
|
rob@77
|
8 var server = http.createServer(function (req, res) {
|
rob@77
|
9 var body = (req.method != "HEAD" ? "Hello World" : "");
|
rob@77
|
10
|
rob@77
|
11 res.writeHead(200, {
|
rob@77
|
12 "Content-Type": "text/plain",
|
rob@77
|
13 "Content-Length": Buffer.byteLength(body)
|
rob@77
|
14 });
|
rob@77
|
15 // HEAD has no body
|
rob@77
|
16 if (req.method != "HEAD") {
|
rob@77
|
17 res.write(body);
|
rob@77
|
18 }
|
rob@77
|
19 res.end();
|
rob@77
|
20 assert.equal(onreadystatechange, true);
|
rob@77
|
21 assert.equal(readystatechange, true);
|
rob@77
|
22 assert.equal(removed, true);
|
rob@77
|
23 sys.puts("done");
|
rob@77
|
24 this.close();
|
rob@77
|
25 }).listen(8000);
|
rob@77
|
26
|
rob@77
|
27 xhr = new XMLHttpRequest();
|
rob@77
|
28
|
rob@77
|
29 // Track event calls
|
rob@77
|
30 var onreadystatechange = false;
|
rob@77
|
31 var readystatechange = false;
|
rob@77
|
32 var removed = true;
|
rob@77
|
33 var removedEvent = function() {
|
rob@77
|
34 removed = false;
|
rob@77
|
35 };
|
rob@77
|
36
|
rob@77
|
37 xhr.onreadystatechange = function() {
|
rob@77
|
38 onreadystatechange = true;
|
rob@77
|
39 };
|
rob@77
|
40
|
rob@77
|
41 xhr.addEventListener("readystatechange", function() {
|
rob@77
|
42 readystatechange = true;
|
rob@77
|
43 });
|
rob@77
|
44
|
rob@77
|
45 // This isn't perfect, won't guarantee it was added in the first place
|
rob@77
|
46 xhr.addEventListener("readystatechange", removedEvent);
|
rob@77
|
47 xhr.removeEventListener("readystatechange", removedEvent);
|
rob@77
|
48
|
rob@77
|
49 xhr.open("GET", "http://localhost:8000");
|
rob@77
|
50 xhr.send();
|