Files
cocos-engine/tests/core/memop/cached-array.test.ts
2023-09-26 11:33:30 +08:00

91 lines
2.2 KiB
TypeScript

import { memop } from "@base/utils";
const { CachedArray } = memop;
const cachedArray = new CachedArray(10);
test('basic', () => {
expect(cachedArray.length).toBe(0);
expect(cachedArray.array.length).toBe(10);
cachedArray.push(1);
expect(cachedArray.length).toBe(1);
cachedArray.push(2);
expect(cachedArray.length).toBe(2);
cachedArray.push(3);
expect(cachedArray.length).toBe(3);
expect(cachedArray.array.length).toBe(10);
expect(cachedArray.pop()).toBe(3);
expect(cachedArray.pop()).toBe(2);
expect(cachedArray.pop()).toBe(1);
expect(cachedArray.length).toBe(0);
for (let i = 0; i < 20; i++) {
cachedArray.push(i);
}
expect(cachedArray.length).toBe(20);
expect(cachedArray.array.length).toBe(20);
for (let i = 0; i < 20; i++) {
expect(cachedArray.get(i)).toBe(i);
}
cachedArray.clear();
expect(cachedArray.length).toBe(0);
expect(cachedArray.array.length).toBe(20);
});
test('sort', () => {
cachedArray.clear();
const toBeSort = [5, 9, 2, 3, 8, 4];
for (let i = 0; i < toBeSort.length; i++) {
cachedArray.push(toBeSort[i]);
}
cachedArray.sort();
const sorted = [2, 3, 4, 5, 8, 9];
for (let i = 0; i < toBeSort.length; i++) {
expect(cachedArray.get(i)).toBe(sorted[i]);
}
});
test('shrink', () => {
for (let i = 0; i < 100; i++) {
cachedArray.push(i);
}
cachedArray.clear();
expect(cachedArray.length).toBe(0);
expect(cachedArray.array.length).toBeGreaterThan(100);
cachedArray.push(1);
cachedArray.push(2);
cachedArray.push(3);
expect(cachedArray.length).toBe(3);
cachedArray.tryShrink();
expect(cachedArray.length).toBe(3);
expect(cachedArray.array.length < 100 && cachedArray.array.length > 50).toBeTruthy();
// can not shrink any more
cachedArray.tryShrink();
cachedArray.tryShrink();
cachedArray.tryShrink();
cachedArray.tryShrink();
expect(cachedArray.length).toBe(3);
expect(cachedArray.array.length).toBeGreaterThan(10);
expect(cachedArray.array.length).toBeLessThan(20);
});
test('destroy', () => {
cachedArray.destroy();
expect(cachedArray.length).toBe(0);
expect(cachedArray.array.length).toBe(0);
});