fleeting-garden/src/config/normalize-runtime-settings.test.ts

65 lines
1.4 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
normalizeNumberControlValue,
normalizeRuntimeSettings,
} from './normalize-runtime-settings';
import type { GardenRuntimeSettings } from './types';
describe('normalizeNumberControlValue', () => {
it('clamps and rounds numeric controls', () => {
expect(
normalizeNumberControlValue(12.6, {
folder: 'Test',
integer: true,
max: 10,
min: 0,
})
).toBe(10);
expect(
normalizeNumberControlValue(Number.NaN, {
folder: 'Test',
min: 3,
})
).toBe(3);
});
it('keeps only declared option values', () => {
expect(
normalizeNumberControlValue(2, {
folder: 'Test',
options: { off: 0, on: 2 },
})
).toBe(2);
expect(
normalizeNumberControlValue(3, {
folder: 'Test',
options: { off: 0, on: 2 },
})
).toBe(0);
});
});
describe('normalizeRuntimeSettings', () => {
it('normalizes configured runtime keys and leaves hidden keys alone', () => {
const settings = {
brushSize: 99,
selectedColorIndex: 7,
} as GardenRuntimeSettings;
expect(
normalizeRuntimeSettings(settings, {
brushSize: {
folder: 'Brush',
max: 12,
min: 1,
},
})
).toMatchObject({
brushSize: 12,
selectedColorIndex: 7,
});
});
});