goog.async.freelist_test.js Maven / Gradle / Ivy
// Copyright 2015 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.async.FreeListTest');
goog.setTestOnly('goog.async.FreeListTest');
goog.require('goog.async.FreeList');
goog.require('goog.testing.jsunit');
var id = 0;
var list = null;
function setUp() {
var id = 0;
var data = 1;
list = new goog.async.FreeList(
function() {
data *= 2;
return {id: id++, data: data, next: null};
},
function(item) { item.data = null; },
2); // max occupancy
}
function tearDown() {
list = null;
}
function testItemsCreatedAsNeeded() {
assertEquals(0, list.occupants());
var item1 = list.get();
assertNotNullNorUndefined(item1);
var item2 = list.get();
assertNotNullNorUndefined(item2);
assertNotEquals(item1, item2);
assertEquals(0, list.occupants());
}
function testMaxOccupancy() {
assertEquals(0, list.occupants());
var item1 = list.get();
var item2 = list.get();
var item3 = list.get();
list.put(item1);
list.put(item2);
list.put(item3);
assertEquals(2, list.occupants());
}
function testRecycling() {
assertEquals(0, list.occupants());
var item1 = list.get();
assertNotNull(item1.data);
list.put(item1);
var item2 = list.get();
// Item recycled
assertEquals(item1, item2);
// reset method called
assertNull(item2.data);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy