UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

278 lines (219 loc) 6.53 kB
<!DOCTYPE html> <html> <!-- Copyright 2006 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by an Apache 2.0 License. See the COPYING file for details. --> <head> <title>Closure Unit Tests - goog.structs.Pool</title> <script src="../base.js"></script> <script> goog.require('goog.structs'); goog.require('goog.structs.Pool'); goog.require('goog.testing.jsunit'); </script> </head> <body> <script> // 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()); try { p.setMinimumCount(11); } catch(e) { assertTrue('Excption caught', true); return; } assertTrue('Exception should of been caught', false); } function testInvalidMinMax2() { var p = new goog.structs.Pool(5, 10); assertEquals(5, p.getCount()); assertEquals(0, p.getInUseCount()); assertEquals(5, p.getFreeCount()); try { p.setMaximumCount(4); } catch(e) { assertTrue('Excption caught', true); return; } assertTrue('Exception should of been caught', false); } function testInvalidMinMax3() { try { var p = new goog.structs.Pool(10, 1); info('pool made'); } catch(e) { assertTrue('Excption caught', true); return; } assertTrue('Exception should of been caught', false); } </script> </body> </html>