24 lines
993 B
TypeScript
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 }]);
|
|
});
|
|
});
|