sku-pg
Version:
Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!
228 lines (195 loc) • 6.34 kB
HTML
<html>
<!--
Copyright 2006 The Closure Library Authors. All Rights Reserved.
Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Closure Unit Tests - goog.net.NetworkTester</title>
<script src="../base.js"></script>
<script>
goog.require('goog.Uri')
goog.require('goog.net.NetworkTester');
goog.require('goog.testing.MockClock');
goog.require('goog.testing.jsunit');
</script>
</head>
<body>
<script>
var clock;
function setUp() {
clock = new goog.testing.MockClock(true);
}
function tearDown() {
clock.dispose();
}
function testSuccess() {
// set up the tster
var handler = new Handler();
var tester = new goog.net.NetworkTester(handler.callback, handler);
assertFalse(tester.isRunning());
tester.start();
assertTrue(handler.isEmpty());
assertTrue(tester.isRunning());
// simulate the image load and verify
var image = tester.image_;
assertEquals(String(tester.getUri()), image.src);
assertTrue(handler.isEmpty());
image.onload.call(null);
assertTrue(handler.dequeue());
assertFalse(tester.isRunning());
}
function testFailure() {
// set up the tester
var handler = new Handler();
var tester = new goog.net.NetworkTester(handler.callback, handler);
assertFalse(tester.isRunning());
tester.start();
assertTrue(handler.isEmpty());
assertTrue(tester.isRunning());
// simulate the image failure and verify
var image = tester.image_;
assertEquals(String(tester.getUri()), image.src);
assertTrue(handler.isEmpty());
image.onerror.call(null);
assertFalse(handler.dequeue());
assertFalse(tester.isRunning());
}
function testAbort() {
// set up the tester
var handler = new Handler();
var tester = new goog.net.NetworkTester(handler.callback, handler);
assertFalse(tester.isRunning());
tester.start();
assertTrue(handler.isEmpty());
assertTrue(tester.isRunning());
// simulate the image abort and verify
var image = tester.image_;
assertEquals(String(tester.getUri()), image.src);
assertTrue(handler.isEmpty());
image.onabort.call(null);
assertFalse(handler.dequeue());
assertFalse(tester.isRunning());
}
function testTimeout() {
// set up the tester
var handler = new Handler();
var tester = new goog.net.NetworkTester(handler.callback, handler);
assertFalse(tester.isRunning());
tester.start();
assertTrue(handler.isEmpty());
assertTrue(tester.isRunning());
// simulate the image timeout and verify
var image = tester.image_;
assertEquals(String(tester.getUri()), image.src);
assertTrue(handler.isEmpty());
clock.tick(10000);
assertFalse(handler.dequeue());
assertFalse(tester.isRunning());
}
function testRetries() {
// set up the tester
var handler = new Handler();
var tester = new goog.net.NetworkTester(handler.callback, handler);
tester.setNumRetries(1);
assertFalse(tester.isRunning());
tester.start();
assertTrue(handler.isEmpty());
assertTrue(tester.isRunning());
// try number 1 fails
var image = tester.image_;
assertEquals(String(tester.getUri()), image.src);
assertTrue(handler.isEmpty());
image.onerror.call(null);
assertTrue(handler.isEmpty());
assertTrue(tester.isRunning());
// try number 2 succeeds
image = tester.image_;
assertEquals(String(tester.getUri()), image.src);
assertTrue(handler.isEmpty());
image.onload.call(null);
assertTrue(handler.dequeue());
assertFalse(tester.isRunning());
}
function testPauseBetweenRetries() {
// set up the tester
var handler = new Handler();
var tester = new goog.net.NetworkTester(handler.callback, handler);
tester.setNumRetries(1);
tester.setPauseBetweenRetries(1000);
assertFalse(tester.isRunning());
tester.start();
assertTrue(handler.isEmpty());
assertTrue(tester.isRunning());
// try number 1 fails
var image = tester.image_;
assertEquals(String(tester.getUri()), image.src);
assertTrue(handler.isEmpty());
image.onerror.call(null);
assertTrue(handler.isEmpty());
assertTrue(tester.isRunning());
// need to pause 1000 ms for the second attempt
assertNull(tester.image_);
clock.tick(1000);
// try number 2 succeeds
image = tester.image_;
assertEquals(String(tester.getUri()), image.src);
assertTrue(handler.isEmpty());
image.onload.call(null);
assertTrue(handler.dequeue());
assertFalse(tester.isRunning());
}
function testNonDefaultUri() {
var handler = new Handler();
var newUri = new goog.Uri('//www.google.com/images/cleardot2.gif');
var tester = new goog.net.NetworkTester(handler.callback, handler, newUri);
var testerUri = tester.getUri();
assertTrue(testerUri.toString().indexOf('cleardot2') > -1);
}
function testOffline() {
// set up the tester
var handler = new Handler();
var tester = new goog.net.NetworkTester(handler.callback, handler);
var orgGetNavigatorOffline = goog.net.NetworkTester.getNavigatorOffline_;
goog.net.NetworkTester.getNavigatorOffline_ = function() {
return true;
};
try {
assertFalse(tester.isRunning());
tester.start();
assertTrue(handler.isEmpty());
assertTrue(tester.isRunning());
// the call is done async
clock.tick(1);
assertFalse(handler.dequeue());
assertFalse(tester.isRunning());
} finally {
// Clean up!
goog.net.NetworkTester.getNavigatorOffline_ = orgGetNavigatorOffline;
}
}
// Handler object for verifying callback
function Handler() {
this.events_ = [];
};
Handler.prototype.callback = function(result) {
this.events_.push(result);
};
Handler.prototype.isEmpty = function() {
return this.events_.length == 0;
}
Handler.prototype.dequeue = function() {
if (this.isEmpty()) {
throw Error("Handler is empty");
}
return this.events_.shift();
};
// override image constructor for test - can't use a real image due to
// async load of images - have to simulate it
function Image() {
}
</script>
</body>
</html>