mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-08-29 04:26:38 +00:00
37 lines
1.5 KiB
TypeScript
37 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { decodeSeqRanges, encodeSeqRanges } from '@deepseek-ai/dsh-session'
|
|
|
|
describe('sourceEventSeqs ranges', () => {
|
|
it.each([
|
|
[],
|
|
[5],
|
|
[10, 11, 12, 13, 14],
|
|
[16, 17, 100, 200, 201, 202, 203],
|
|
[3, 2],
|
|
[Number.MAX_SAFE_INTEGER - 1, 0, Number.MAX_SAFE_INTEGER - 2],
|
|
].map(values => [values]))('round-trips %j', (values) => {
|
|
expect(decodeSeqRanges(encodeSeqRanges(values))).toEqual(values)
|
|
})
|
|
|
|
it('encodes only profitable increasing runs', () => {
|
|
expect(encodeSeqRanges([1, 3, 4, 5, 7])).toEqual([1, [3, 5], 7])
|
|
expect(encodeSeqRanges([1, 3, 4, 7])).toEqual([1, 3, 4, 7])
|
|
expect(encodeSeqRanges([3, 2])).toEqual([3, 2])
|
|
})
|
|
|
|
it('does not impose a persistence-only provenance length limit', () => {
|
|
const values = Array.from({ length: 1_000_001 }, (_, index) => index)
|
|
expect(encodeSeqRanges(values)).toEqual([[0, 1_000_000]])
|
|
})
|
|
|
|
it('rejects malformed or impossible expansions', () => {
|
|
expect(() => decodeSeqRanges('nope')).toThrow(/must be an array/)
|
|
expect(() => decodeSeqRanges([-1])).toThrow(/non-negative safe integers/)
|
|
expect(() => decodeSeqRanges([[1]])).toThrow(/\[start, end\] pairs/)
|
|
expect(() => decodeSeqRanges([[4, 2]])).toThrow(/start <= end/)
|
|
expect(() => decodeSeqRanges([[2, 5], [4, 7]])).toThrow(/strictly increasing/)
|
|
expect(() => decodeSeqRanges([0], 0)).toThrow(/exceeds its event sequence/)
|
|
expect(() => decodeSeqRanges([[0, 10]], 10)).toThrow(/exceeds its event sequence/)
|
|
})
|
|
})
|