1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-19 00:15:43 +01:00
unleash.unleash/src/lib/services/client-metrics/list.test.ts
Martin Lehmann 064599c942
fix: refactor client-metrics list and ttl-list to TypeScript (#1080)
Co-authored-by: Ivar Conradi Østhus <ivarconr@gmail.com>
2021-11-11 20:29:40 +01:00

124 lines
2.7 KiB
TypeScript

import List from './list';
function getList() {
const list = new List<number>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
return list;
}
test('should emit "evicted" events for objects leaving list', () => {
const list = getList();
const evictedList = [];
list.on('evicted', (value) => {
evictedList.push(value);
});
expect(evictedList.length === 0).toBe(true);
list.reverseRemoveUntilTrue(({ value }) => {
if (value === 4) {
return true;
}
return false;
});
expect(evictedList.length === 3).toBe(true);
list.reverseRemoveUntilTrue(() => false);
expect(evictedList.length === 7).toBe(true);
list.add(1);
list.reverseRemoveUntilTrue(() => false);
expect(evictedList.length === 8).toBe(true);
});
test('list should be able remove until given value', () => {
const list = getList();
expect(list.toArray().length === 7).toBe(true);
list.reverseRemoveUntilTrue(({ value }) => value === 4);
expect(list.toArray().length === 4).toBe(true);
list.reverseRemoveUntilTrue(({ value }) => value === 5);
expect(list.toArray().length === 3).toBe(true);
list.reverseRemoveUntilTrue(({ value }) => value === 5);
expect(list.toArray().length === 3).toBe(true);
});
test('list can be cleared and re-add entries', () => {
const list = getList();
list.add(8);
list.add(9);
expect(list.toArray().length === 9).toBe(true);
list.reverseRemoveUntilTrue(() => false);
expect(list.toArray().length === 0).toBe(true);
list.add(1);
list.add(2);
list.add(3);
expect(list.toArray().length === 3).toBe(true);
});
test('should not iterate empty list ', () => {
const list = new List();
let iterateCount = 0;
list.iterate(() => {
iterateCount++;
});
expect(iterateCount === 0).toBe(true);
});
test('should iterate', () => {
const list = getList();
let iterateCount = 0;
list.iterate(({ value }) => {
iterateCount++;
if (value === 4) {
return false;
}
return true;
});
expect(iterateCount === 4).toBe(true);
});
test('should reverse iterate', () => {
const list = getList();
let iterateCount = 0;
list.iterateReverse(({ value }) => {
iterateCount++;
if (value === 5) {
return false;
}
return true;
});
expect(iterateCount === 5).toBe(true);
});
test('should not reverse iterate empty list', () => {
const list = new List();
let iterateCount = 0;
list.iterateReverse(() => {
iterateCount++;
});
expect(iterateCount === 0).toBe(true);
});