Files
cube/apps/werewolf/frontend/src/__tests__/storage.test.ts
T

40 lines
1.5 KiB
TypeScript
Raw Normal View History

import { describe, expect, it } from 'vitest'
import { addHistory, type HistoryEntry } from '../logic/storage'
describe('addHistory', () => {
it('inserts new entries at the front', () => {
const h: HistoryEntry[] = [{ playerCount: 8, roles: { 狼人: 2 } }]
const out = addHistory(h, { playerCount: 9, roles: { 狼人: 3 } })
expect(out[0]).toEqual({ playerCount: 9, roles: { 狼人: 3 } })
expect(out).toHaveLength(2)
})
it('deduplicates same (playerCount, roles)', () => {
const h: HistoryEntry[] = [
{ playerCount: 8, roles: { 狼人: 2, 村民: 6 } },
{ playerCount: 9, roles: { 狼人: 3, 村民: 6 } },
]
const out = addHistory(h, { playerCount: 8, roles: { 狼人: 2, 村民: 6 } })
expect(out).toHaveLength(2)
expect(out[0]).toEqual({ playerCount: 8, roles: { 狼人: 2, 村民: 6 } })
// 9 人配置应该还在
expect(out[1]).toEqual({ playerCount: 9, roles: { 狼人: 3, 村民: 6 } })
})
it('distinguishes entries with same playerCount but different role counts', () => {
const h: HistoryEntry[] = [{ playerCount: 8, roles: { 狼人: 2 } }]
const out = addHistory(h, { playerCount: 8, roles: { 狼人: 3 } })
expect(out).toHaveLength(2)
})
it('caps history at 50 entries', () => {
let h: HistoryEntry[] = []
for (let i = 0; i < 100; i++) {
h = addHistory(h, { playerCount: 8, roles: { 狼人: i } })
}
expect(h).toHaveLength(50)
// 最新的(i=99)在最前
expect(h[0]).toEqual({ playerCount: 8, roles: { 狼人: 99 } })
})
})