Files
Mujoco_WASM/web_platform/src/tuning/ScalarRingBuffer.test.ts
T
chenlin 63d67a645b
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
feat(tuning): release V0.8.2 Agent 界面重构
2026-09-03 16:25:53 +08:00

24 lines
993 B
TypeScript

import { describe, expect, it } from 'vitest';
import { ScalarRingBuffer } from './ScalarRingBuffer';
const point = (step: number, value = step) => ({ step, wallTime: step / 10, value });
describe('ScalarRingBuffer', () => {
it('固定容量覆盖最旧点并保持按 step 排序', () => {
const buffer = new ScalarRingBuffer(3);
buffer.appendMany([point(2), point(1), point(3), point(4)]);
expect(buffer.size).toBe(3);
expect(buffer.snapshot().map((value) => value.step)).toEqual([1, 3, 4]);
expect(buffer.latestStep).toBe(4);
});
it('按 step 去重更新且忽略非有限数据', () => {
const buffer = new ScalarRingBuffer(4);
expect(buffer.append(point(1, 2))).toBe(true);
expect(buffer.append(point(1, 2))).toBe(false);
expect(buffer.append(point(1, 3))).toBe(true);
expect(buffer.append({ step: 2, wallTime: 0, value: Number.NaN })).toBe(false);
expect(buffer.snapshot()).toEqual([{ step: 1, wallTime: 0.1, value: 3 }]);
});
});