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

124 lines
2.7 KiB
TypeScript
Raw Normal View History

import List from './list';
2016-11-06 20:52:08 +01:00
2017-06-28 10:17:14 +02:00
function getList() {
const list = new List<number>();
2016-11-06 20:52:08 +01:00
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', () => {
2016-11-06 20:52:08 +01:00
const list = getList();
const evictedList = [];
list.on('evicted', (value) => {
2016-11-06 20:52:08 +01:00
evictedList.push(value);
});
expect(evictedList.length === 0).toBe(true);
2016-11-06 20:52:08 +01:00
list.reverseRemoveUntilTrue(({ value }) => {
if (value === 4) {
return true;
}
return false;
});
expect(evictedList.length === 3).toBe(true);
2016-11-06 20:52:08 +01:00
list.reverseRemoveUntilTrue(() => false);
expect(evictedList.length === 7).toBe(true);
2016-11-06 20:52:08 +01:00
list.add(1);
list.reverseRemoveUntilTrue(() => false);
expect(evictedList.length === 8).toBe(true);
2016-11-06 20:52:08 +01:00
});
test('list should be able remove until given value', () => {
2016-11-06 20:52:08 +01:00
const list = getList();
expect(list.toArray().length === 7).toBe(true);
2016-11-06 20:52:08 +01:00
list.reverseRemoveUntilTrue(({ value }) => value === 4);
expect(list.toArray().length === 4).toBe(true);
2016-11-06 20:52:08 +01:00
2016-11-07 08:44:46 +01:00
list.reverseRemoveUntilTrue(({ value }) => value === 5);
expect(list.toArray().length === 3).toBe(true);
2016-11-06 20:52:08 +01:00
2016-11-07 08:44:46 +01:00
list.reverseRemoveUntilTrue(({ value }) => value === 5);
expect(list.toArray().length === 3).toBe(true);
2016-11-06 20:52:08 +01:00
});
test('list can be cleared and re-add entries', () => {
2016-11-06 20:52:08 +01:00
const list = getList();
list.add(8);
list.add(9);
expect(list.toArray().length === 9).toBe(true);
2016-11-06 20:52:08 +01:00
list.reverseRemoveUntilTrue(() => false);
expect(list.toArray().length === 0).toBe(true);
2016-11-06 20:52:08 +01:00
list.add(1);
list.add(2);
list.add(3);
expect(list.toArray().length === 3).toBe(true);
2016-11-06 20:52:08 +01:00
});
test('should not iterate empty list ', () => {
const list = new List();
let iterateCount = 0;
list.iterate(() => {
iterateCount++;
});
expect(iterateCount === 0).toBe(true);
});
test('should iterate', () => {
2016-11-06 20:52:08 +01:00
const list = getList();
let iterateCount = 0;
list.iterate(({ value }) => {
iterateCount++;
if (value === 4) {
return false;
}
return true;
});
expect(iterateCount === 4).toBe(true);
2016-11-06 20:52:08 +01:00
});
test('should reverse iterate', () => {
2016-11-06 20:52:08 +01:00
const list = getList();
let iterateCount = 0;
list.iterateReverse(({ value }) => {
iterateCount++;
2016-11-07 08:44:46 +01:00
if (value === 5) {
2016-11-06 20:52:08 +01:00
return false;
}
return true;
});
expect(iterateCount === 5).toBe(true);
2016-11-06 20:52:08 +01:00
});
test('should not reverse iterate empty list', () => {
const list = new List();
let iterateCount = 0;
list.iterateReverse(() => {
iterateCount++;
});
expect(iterateCount === 0).toBe(true);
});