import { expect, test } from "vitest" import { applyDeltaToNumberContent, applyDeltaToTextContent } from "#Source/aio/index.ts" test("applyDeltaToTextContent appends, conditionally removes, resets and keeps prior snapshots immutable", () => { const initial = { deltaList: [], total: "", } const appended = applyDeltaToTextContent(initial, { type: "append", text: "mobius", }) const removed = applyDeltaToTextContent(appended, { type: "remove", text: "ius", }) const unchangedRemove = applyDeltaToTextContent(removed, { type: "remove", text: "xyz", }) const reset = applyDeltaToTextContent(unchangedRemove, { type: "reset", }) expect(initial).toEqual({ deltaList: [], total: "", }) expect(appended).toEqual({ deltaList: [{ type: "append", text: "mobius" }], total: "mobius", }) expect(removed).toEqual({ deltaList: [ { type: "append", text: "mobius" }, { type: "remove", text: "ius" }, ], total: "mob", }) expect(unchangedRemove).toEqual({ deltaList: [ { type: "append", text: "mobius" }, { type: "remove", text: "ius" }, { type: "remove", text: "xyz" }, ], total: "mob", }) expect(reset).toEqual({ deltaList: [ { type: "append", text: "mobius" }, { type: "remove", text: "ius" }, { type: "remove", text: "xyz" }, { type: "reset" }, ], total: "", }) }) test("applyDeltaToNumberContent accumulates, subtracts, resets and keeps prior snapshots immutable", () => { const initial = { deltaList: [], total: 0, } const appended = applyDeltaToNumberContent(initial, { type: "append", value: 10, }) const removed = applyDeltaToNumberContent(appended, { type: "remove", value: 3, }) const reset = applyDeltaToNumberContent(removed, { type: "reset", }) expect(initial).toEqual({ deltaList: [], total: 0, }) expect(appended).toEqual({ deltaList: [{ type: "append", value: 10 }], total: 10, }) expect(removed).toEqual({ deltaList: [ { type: "append", value: 10 }, { type: "remove", value: 3 }, ], total: 7, }) expect(reset).toEqual({ deltaList: [{ type: "append", value: 10 }, { type: "remove", value: 3 }, { type: "reset" }], total: 0, }) })