110 lines
4.0 KiB
TypeScript
110 lines
4.0 KiB
TypeScript
![]() |
import { assertEquals } from '@/deps-test.ts';
|
||
|
|
||
|
import { EventSet } from './event-set.ts';
|
||
|
|
||
|
Deno.test('EventSet', () => {
|
||
|
const set = new EventSet();
|
||
|
assertEquals(set.size, 0);
|
||
|
|
||
|
const event = { id: '1', kind: 0, pubkey: 'abc', content: '', created_at: 0, sig: '', tags: [] };
|
||
|
set.add(event);
|
||
|
assertEquals(set.size, 1);
|
||
|
assertEquals(set.has(event), true);
|
||
|
|
||
|
set.add(event);
|
||
|
assertEquals(set.size, 1);
|
||
|
assertEquals(set.has(event), true);
|
||
|
|
||
|
set.delete(event);
|
||
|
assertEquals(set.size, 0);
|
||
|
assertEquals(set.has(event), false);
|
||
|
|
||
|
set.delete(event);
|
||
|
assertEquals(set.size, 0);
|
||
|
assertEquals(set.has(event), false);
|
||
|
|
||
|
set.add(event);
|
||
|
assertEquals(set.size, 1);
|
||
|
assertEquals(set.has(event), true);
|
||
|
|
||
|
set.clear();
|
||
|
assertEquals(set.size, 0);
|
||
|
assertEquals(set.has(event), false);
|
||
|
});
|
||
|
|
||
|
Deno.test('EventSet.add (replaceable)', () => {
|
||
|
const event0 = { id: '1', kind: 0, pubkey: 'abc', content: '', created_at: 0, sig: '', tags: [] };
|
||
|
const event1 = { id: '2', kind: 0, pubkey: 'abc', content: '', created_at: 1, sig: '', tags: [] };
|
||
|
const event2 = { id: '3', kind: 0, pubkey: 'abc', content: '', created_at: 2, sig: '', tags: [] };
|
||
|
|
||
|
const set = new EventSet();
|
||
|
set.add(event0);
|
||
|
assertEquals(set.size, 1);
|
||
|
assertEquals(set.has(event0), true);
|
||
|
|
||
|
set.add(event1);
|
||
|
assertEquals(set.size, 1);
|
||
|
assertEquals(set.has(event0), false);
|
||
|
assertEquals(set.has(event1), true);
|
||
|
|
||
|
set.add(event2);
|
||
|
assertEquals(set.size, 1);
|
||
|
assertEquals(set.has(event0), false);
|
||
|
assertEquals(set.has(event1), false);
|
||
|
assertEquals(set.has(event2), true);
|
||
|
});
|
||
|
|
||
|
Deno.test('EventSet.add (parameterized)', () => {
|
||
|
const event0 = { id: '1', kind: 30000, pubkey: 'abc', content: '', created_at: 0, sig: '', tags: [['d', 'a']] };
|
||
|
const event1 = { id: '2', kind: 30000, pubkey: 'abc', content: '', created_at: 1, sig: '', tags: [['d', 'a']] };
|
||
|
const event2 = { id: '3', kind: 30000, pubkey: 'abc', content: '', created_at: 2, sig: '', tags: [['d', 'a']] };
|
||
|
|
||
|
const set = new EventSet();
|
||
|
set.add(event0);
|
||
|
assertEquals(set.size, 1);
|
||
|
assertEquals(set.has(event0), true);
|
||
|
|
||
|
set.add(event1);
|
||
|
assertEquals(set.size, 1);
|
||
|
assertEquals(set.has(event0), false);
|
||
|
assertEquals(set.has(event1), true);
|
||
|
|
||
|
set.add(event2);
|
||
|
assertEquals(set.size, 1);
|
||
|
assertEquals(set.has(event0), false);
|
||
|
assertEquals(set.has(event1), false);
|
||
|
assertEquals(set.has(event2), true);
|
||
|
});
|
||
|
|
||
|
Deno.test('EventSet.eventReplaces', () => {
|
||
|
const event0 = { id: '1', kind: 0, pubkey: 'abc', content: '', created_at: 0, sig: '', tags: [] };
|
||
|
const event1 = { id: '2', kind: 0, pubkey: 'abc', content: '', created_at: 1, sig: '', tags: [] };
|
||
|
const event2 = { id: '3', kind: 0, pubkey: 'abc', content: '', created_at: 2, sig: '', tags: [] };
|
||
|
const event3 = { id: '4', kind: 0, pubkey: 'def', content: '', created_at: 0, sig: '', tags: [] };
|
||
|
|
||
|
assertEquals(EventSet.eventReplaces(event1, event0), true);
|
||
|
assertEquals(EventSet.eventReplaces(event2, event0), true);
|
||
|
assertEquals(EventSet.eventReplaces(event2, event1), true);
|
||
|
|
||
|
assertEquals(EventSet.eventReplaces(event0, event1), false);
|
||
|
assertEquals(EventSet.eventReplaces(event0, event2), false);
|
||
|
assertEquals(EventSet.eventReplaces(event1, event2), false);
|
||
|
|
||
|
assertEquals(EventSet.eventReplaces(event3, event1), false);
|
||
|
assertEquals(EventSet.eventReplaces(event1, event3), false);
|
||
|
});
|
||
|
|
||
|
Deno.test('EventSet.eventReplaces (parameterized)', () => {
|
||
|
const event0 = { id: '1', kind: 30000, pubkey: 'abc', content: '', created_at: 0, sig: '', tags: [['d', 'a']] };
|
||
|
const event1 = { id: '2', kind: 30000, pubkey: 'abc', content: '', created_at: 1, sig: '', tags: [['d', 'a']] };
|
||
|
const event2 = { id: '3', kind: 30000, pubkey: 'abc', content: '', created_at: 2, sig: '', tags: [['d', 'a']] };
|
||
|
|
||
|
assertEquals(EventSet.eventReplaces(event1, event0), true);
|
||
|
assertEquals(EventSet.eventReplaces(event2, event0), true);
|
||
|
assertEquals(EventSet.eventReplaces(event2, event1), true);
|
||
|
|
||
|
assertEquals(EventSet.eventReplaces(event0, event1), false);
|
||
|
assertEquals(EventSet.eventReplaces(event0, event2), false);
|
||
|
assertEquals(EventSet.eventReplaces(event1, event2), false);
|
||
|
});
|