Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,237 @@
|
||||
// Copyright 2006 The Closure Library Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS-IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
goog.provide('goog.net.NetworkTesterTest');
|
||||
goog.setTestOnly('goog.net.NetworkTesterTest');
|
||||
|
||||
goog.require('goog.Uri');
|
||||
goog.require('goog.net.NetworkTester');
|
||||
goog.require('goog.testing.MockClock');
|
||||
goog.require('goog.testing.jsunit');
|
||||
|
||||
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);
|
||||
assertEquals(tester.getAttemptCount(), 0);
|
||||
assertFalse(tester.isRunning());
|
||||
tester.start();
|
||||
assertTrue(handler.isEmpty());
|
||||
assertTrue(tester.isRunning());
|
||||
assertEquals(tester.getAttemptCount(), 1);
|
||||
|
||||
// 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());
|
||||
assertEquals(tester.getAttemptCount(), 2);
|
||||
|
||||
// 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());
|
||||
assertEquals(tester.getAttemptCount(), 2);
|
||||
}
|
||||
|
||||
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_ = [];
|
||||
}
|
||||
|
||||
function testGetAttemptCount() {
|
||||
// set up the tester
|
||||
var handler = new Handler();
|
||||
var tester = new goog.net.NetworkTester(handler.callback, handler);
|
||||
assertEquals(tester.getAttemptCount(), 0);
|
||||
assertTrue(tester.attempt_ === tester.getAttemptCount());
|
||||
assertFalse(tester.isRunning());
|
||||
tester.start();
|
||||
assertTrue(tester.isRunning());
|
||||
assertTrue(tester.attempt_ === tester.getAttemptCount());
|
||||
}
|
||||
|
||||
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() {
|
||||
}
|
||||
Reference in New Issue
Block a user