Files
ThreadNet-Web/apps/web/src/utils/FixedRollingArray.test.ts
T
Michael TelatynskiandGitHub b51c5ed8a7 Tweak oxlint config & delint our code (#34301)
* Remove stale max-len disablements

* Remove stale camelCase & naming-convention disablements

* Remove stale ban-ts-comment disablements

* Remove stale no-var disablements

* Remove stale no-empty-property disablements

* Remove stale react rule disablements

* Remove stale no-constant-condition disablements

* Remove stale no-unused-vars disablements

* Remove stale disablements for disabled rules

* fixup camelcase

* Remove dead code

* Tidy code

* Tweak oxlint config
2026-07-17 07:55:31 +00:00

60 lines
1.7 KiB
TypeScript

/*
Copyright 2024 New Vector Ltd.
Copyright 2021 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
*/
import { describe, it, expect } from "vitest";
import { FixedRollingArray } from "./FixedRollingArray";
describe("FixedRollingArray", () => {
it("should seed the array with the given value", () => {
const seed = "test";
const width = 24;
const array = new FixedRollingArray(width, seed);
expect(array.value.length).toBe(width);
expect(array.value.every((v) => v === seed)).toBe(true);
});
it("should insert at the correct end", () => {
const seed = "test";
const value = "changed";
const width = 24;
const array = new FixedRollingArray(width, seed);
array.pushValue(value);
expect(array.value.length).toBe(width);
expect(array.value[0]).toBe(value);
});
it("should roll over", () => {
const seed = -1;
const width = 24;
const array = new FixedRollingArray(width, seed);
const maxValue = width * 2;
const minValue = width; // because we're forcing a rollover
for (let i = 0; i <= maxValue; i++) {
array.pushValue(i);
}
expect(array.value.length).toBe(width);
for (let i = 1; i < width; i++) {
const current = array.value[i];
const previous = array.value[i - 1];
expect(previous - current).toBe(1);
if (i === 1) {
expect(previous).toBe(maxValue);
} else if (i === width) {
expect(current).toBe(minValue);
}
}
});
});