Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,285 @@
|
||||
// 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.structs.PoolTest');
|
||||
goog.setTestOnly('goog.structs.PoolTest');
|
||||
|
||||
goog.require('goog.structs.Pool');
|
||||
goog.require('goog.testing.MockClock');
|
||||
goog.require('goog.testing.jsunit');
|
||||
|
||||
// Implementation of the Pool class with isObjectDead() always returning TRUE,
|
||||
// so that the the Pool will not reuse any objects.
|
||||
function NoObjectReusePool(opt_min, opt_max) {
|
||||
goog.structs.Pool.call(this, opt_min, opt_max);
|
||||
}
|
||||
goog.inherits(NoObjectReusePool, goog.structs.Pool);
|
||||
|
||||
NoObjectReusePool.prototype.objectCanBeReused = function(obj) {
|
||||
return false;
|
||||
};
|
||||
|
||||
|
||||
function testExceedMax1() {
|
||||
var p = new goog.structs.Pool(0, 3);
|
||||
var obj1 = p.getObject();
|
||||
var obj2 = p.getObject();
|
||||
var obj3 = p.getObject();
|
||||
var obj4 = p.getObject();
|
||||
var obj5 = p.getObject();
|
||||
|
||||
assertNotUndefined(obj1);
|
||||
assertNotUndefined(obj2);
|
||||
assertNotUndefined(obj3);
|
||||
assertUndefined(obj4);
|
||||
assertUndefined(obj5);
|
||||
}
|
||||
|
||||
|
||||
function testExceedMax2() {
|
||||
var p = new goog.structs.Pool(0, 1);
|
||||
var obj1 = p.getObject();
|
||||
var obj2 = p.getObject();
|
||||
var obj3 = p.getObject();
|
||||
var obj4 = p.getObject();
|
||||
var obj5 = p.getObject();
|
||||
|
||||
assertNotUndefined(obj1);
|
||||
assertUndefined(obj2);
|
||||
assertUndefined(obj3);
|
||||
assertUndefined(obj4);
|
||||
assertUndefined(obj5);
|
||||
}
|
||||
|
||||
|
||||
function testExceedMax3() {
|
||||
var p = new goog.structs.Pool(); // default: 10
|
||||
var objs = [];
|
||||
|
||||
for (var i = 0; i < 12; i++) {
|
||||
objs[i] = p.getObject();
|
||||
}
|
||||
|
||||
for (var i = 0; i < 10; i++) {
|
||||
assertNotNull('First 10 should be not null', objs[i]);
|
||||
}
|
||||
|
||||
assertUndefined(objs[10]);
|
||||
assertUndefined(objs[11]);
|
||||
}
|
||||
|
||||
|
||||
function testReleaseAndGet1() {
|
||||
var p = new goog.structs.Pool(0, 10);
|
||||
var o = p.getObject();
|
||||
assertEquals(1, p.getCount());
|
||||
assertEquals(1, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
assertTrue('Result should be true', p.releaseObject(o));
|
||||
assertEquals(1, p.getCount());
|
||||
assertEquals(0, p.getInUseCount());
|
||||
assertEquals(1, p.getFreeCount());
|
||||
}
|
||||
|
||||
|
||||
function testReleaseAndGet2() {
|
||||
var p = new NoObjectReusePool(0, 10);
|
||||
var o = p.getObject();
|
||||
assertEquals(1, p.getCount());
|
||||
assertEquals(1, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
assertTrue('Result should be true', p.releaseObject(o));
|
||||
assertEquals(0, p.getCount());
|
||||
assertEquals(0, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
}
|
||||
|
||||
|
||||
function testReleaseAndGet3() {
|
||||
var p = new goog.structs.Pool(0, 10);
|
||||
var o1 = p.getObject();
|
||||
var o2 = p.getObject();
|
||||
var o3 = p.getObject();
|
||||
var o4 = {};
|
||||
assertEquals(3, p.getCount());
|
||||
assertEquals(3, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
assertTrue('Result should be true', p.releaseObject(o1));
|
||||
assertTrue('Result should be true', p.releaseObject(o2));
|
||||
assertFalse('Result should be false', p.releaseObject(o4));
|
||||
assertEquals(3, p.getCount());
|
||||
assertEquals(1, p.getInUseCount());
|
||||
assertEquals(2, p.getFreeCount());
|
||||
}
|
||||
|
||||
|
||||
function testReleaseAndGet4() {
|
||||
var p = new NoObjectReusePool(0, 10);
|
||||
var o1 = p.getObject();
|
||||
var o2 = p.getObject();
|
||||
var o3 = p.getObject();
|
||||
var o4 = {};
|
||||
assertEquals(3, p.getCount());
|
||||
assertEquals(3, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
assertTrue('Result should be true', p.releaseObject(o1));
|
||||
assertTrue('Result should be true', p.releaseObject(o2));
|
||||
assertFalse('Result should be false', p.releaseObject(o4));
|
||||
assertEquals(1, p.getCount());
|
||||
assertEquals(1, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
}
|
||||
|
||||
|
||||
function testIsInPool1() {
|
||||
var p = new goog.structs.Pool();
|
||||
var o1 = p.getObject();
|
||||
var o2 = p.getObject();
|
||||
var o3 = p.getObject();
|
||||
var o4 = {};
|
||||
var o5 = {};
|
||||
var o6 = o1;
|
||||
|
||||
assertTrue(p.contains(o1));
|
||||
assertTrue(p.contains(o2));
|
||||
assertTrue(p.contains(o3));
|
||||
assertFalse(p.contains(o4));
|
||||
assertFalse(p.contains(o5));
|
||||
assertTrue(p.contains(o6));
|
||||
}
|
||||
|
||||
|
||||
function testSetMin1() {
|
||||
var p = new goog.structs.Pool(0, 10);
|
||||
|
||||
assertEquals(0, p.getCount());
|
||||
assertEquals(0, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
|
||||
p.setMinimumCount(10);
|
||||
|
||||
assertEquals(10, p.getCount());
|
||||
assertEquals(0, p.getInUseCount());
|
||||
assertEquals(10, p.getFreeCount());
|
||||
}
|
||||
|
||||
|
||||
function testSetMin2() {
|
||||
var p = new goog.structs.Pool(0, 10);
|
||||
|
||||
assertEquals(0, p.getCount());
|
||||
assertEquals(0, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
|
||||
var o1 = p.getObject();
|
||||
|
||||
assertEquals(1, p.getCount());
|
||||
assertEquals(1, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
|
||||
p.setMinimumCount(10);
|
||||
|
||||
assertEquals(10, p.getCount());
|
||||
assertEquals(1, p.getInUseCount());
|
||||
assertEquals(9, p.getFreeCount());
|
||||
}
|
||||
|
||||
|
||||
function testSetMax1() {
|
||||
var p = new goog.structs.Pool(0, 10);
|
||||
|
||||
assertEquals(0, p.getCount());
|
||||
assertEquals(0, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
|
||||
var o1 = p.getObject();
|
||||
var o2 = p.getObject();
|
||||
var o3 = p.getObject();
|
||||
var o4 = p.getObject();
|
||||
var o5 = p.getObject();
|
||||
|
||||
assertEquals(5, p.getCount());
|
||||
assertEquals(5, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
|
||||
assertTrue('Result should be true', p.releaseObject(o5));
|
||||
|
||||
assertEquals(5, p.getCount());
|
||||
assertEquals(4, p.getInUseCount());
|
||||
assertEquals(1, p.getFreeCount());
|
||||
|
||||
p.setMaximumCount(4);
|
||||
|
||||
assertEquals(4, p.getCount());
|
||||
assertEquals(4, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
}
|
||||
|
||||
|
||||
function testInvalidMinMax1() {
|
||||
var p = new goog.structs.Pool(0, 10);
|
||||
|
||||
assertEquals(0, p.getCount());
|
||||
assertEquals(0, p.getInUseCount());
|
||||
assertEquals(0, p.getFreeCount());
|
||||
|
||||
assertThrows(function() {
|
||||
p.setMinimumCount(11);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function testInvalidMinMax2() {
|
||||
var p = new goog.structs.Pool(5, 10);
|
||||
|
||||
assertEquals(5, p.getCount());
|
||||
assertEquals(0, p.getInUseCount());
|
||||
assertEquals(5, p.getFreeCount());
|
||||
|
||||
assertThrows(function() {
|
||||
p.setMaximumCount(4);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function testInvalidMinMax3() {
|
||||
assertThrows(function() {
|
||||
new goog.structs.Pool(10, 1);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function testRateLimiting() {
|
||||
var clock = new goog.testing.MockClock();
|
||||
clock.install();
|
||||
|
||||
var p = new goog.structs.Pool(0, 3);
|
||||
p.setDelay(100);
|
||||
|
||||
assertNotUndefined(p.getObject());
|
||||
assertUndefined(p.getObject());
|
||||
|
||||
clock.tick(100);
|
||||
assertNotUndefined(p.getObject());
|
||||
assertUndefined(p.getObject());
|
||||
|
||||
clock.tick(100);
|
||||
assertNotUndefined(p.getObject());
|
||||
assertUndefined(p.getObject());
|
||||
|
||||
clock.tick(100);
|
||||
assertUndefined(p.getObject());
|
||||
|
||||
goog.dispose(clock);
|
||||
}
|
||||
Reference in New Issue
Block a user