<html>
<import src="/sky/tests/resources/chai.sky" />
<import src="/sky/tests/resources/mocha.sky" />
<import src="/sky/framework/xmlhttprequest.sky" as="XMLHttpRequest" />
<script>
describe('XMLHttpRequest', function() {
  it('should be able to fetch text files', function(done) {

    var xhr = new XMLHttpRequest();
    xhr.onload = function() {
      assert.equal(xhr.responseText, "This is data from the network.\n");
      done();
    };
    xhr.onerror = function(error) {
      assert.ok(false, "Got error: " + JSON.stringify(error));
      done();
    };
    xhr.open("GET", "http://127.0.0.1:8000/sky/tests/framework/xmlhttprequest/resources/pass.txt");
    xhr.send();
  });
});
</script>
</html>
