| 1 | import { assert, describe, it } from "@effect/vitest" |
| 2 | import { ChunkedMessage } from "effect/eventlog/EventLogMessage" |
| 3 | |
| 4 | describe("EventLogMessage", () => { |
| 5 | it("splits empty data into one chunk", () => { |
| 6 | assert.deepStrictEqual( |
| 7 | ChunkedMessage.split(1, new Uint8Array()), |
| 8 | [new ChunkedMessage({ id: 1, part: [0, 1], data: new Uint8Array() })] |
| 9 | ) |
| 10 | }) |
| 11 | |
| 12 | it("ignores duplicate chunks when joining", () => { |
| 13 | const state = ChunkedMessage.initialJoinState() |
| 14 | const chunk = new ChunkedMessage({ |
| 15 | id: 1, |
| 16 | part: [0, 2], |
| 17 | data: new Uint8Array([1]) |
| 18 | }) |
| 19 | |
| 20 | assert.isUndefined(ChunkedMessage.join(state, chunk)) |
| 21 | assert.isUndefined(ChunkedMessage.join(state, chunk)) |
| 22 | assert.deepStrictEqual( |
| 23 | ChunkedMessage.join( |
| 24 | state, |
| 25 | new ChunkedMessage({ |
| 26 | id: 1, |
| 27 | part: [1, 2], |
| 28 | data: new Uint8Array([2]) |
| 29 | }) |
| 30 | ), |
| 31 | new Uint8Array([1, 2]) |
| 32 | ) |
| 33 | }) |
| 34 | }) |