mirror of
https://github.com/nimbold/Firelink.git
synced 2026-07-28 13:00:10 +00:00
c34c489aef
Persist the selected display unit for disabled limits, preserve in-progress fractional input, and keep exact KiB-backed preset values visible.\n\nNo linked issue.
57 lines
2.2 KiB
TypeScript
57 lines
2.2 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
convertSpeedValue,
|
|
clampSpeedDisplayValue,
|
|
displayValueFromPresetBase,
|
|
formatSpeedLimitForStorage,
|
|
formatPresetValue,
|
|
parseLimit,
|
|
presetBaseFromDisplayValue,
|
|
} from './SpeedLimiterView';
|
|
|
|
describe('SpeedLimiterView speed conversions', () => {
|
|
it('converts KB/s and MB/s using binary units consistently', () => {
|
|
expect(presetBaseFromDisplayValue(1024, 'KB/s')).toBe(1);
|
|
expect(displayValueFromPresetBase(1, 'KB/s')).toBe(1024);
|
|
expect(presetBaseFromDisplayValue(5, 'MB/s')).toBe(5);
|
|
expect(displayValueFromPresetBase(5, 'MB/s')).toBe(5);
|
|
});
|
|
|
|
it('round-trips non-MiB-aligned presets through the integer KiB backend value', () => {
|
|
const presetBase = presetBaseFromDisplayValue(1500, 'KB/s');
|
|
|
|
expect(displayValueFromPresetBase(presetBase, 'KB/s')).toBe(1500);
|
|
expect(convertSpeedValue(1500, 'KB/s', 'MB/s')).toBe(1500 / 1024);
|
|
expect(convertSpeedValue(convertSpeedValue(1500, 'KB/s', 'MB/s'), 'MB/s', 'KB/s')).toBe(1500);
|
|
});
|
|
|
|
it('preserves the selected unit when saving a non-MiB-aligned MB/s value', () => {
|
|
const storedLimit = formatSpeedLimitForStorage(1.5, 'MB/s');
|
|
|
|
expect(storedLimit).toBe('1.5M');
|
|
expect(parseLimit(storedLimit, 1024)).toEqual({ value: 1.5, unit: 'MB/s' });
|
|
});
|
|
|
|
it('preserves an explicitly selected KB/s unit at MiB boundaries', () => {
|
|
const storedLimit = formatSpeedLimitForStorage(1024, 'KB/s');
|
|
|
|
expect(storedLimit).toBe('1024K');
|
|
expect(parseLimit(storedLimit, 1)).toEqual({ value: 1024, unit: 'KB/s' });
|
|
});
|
|
|
|
it('restores the persisted unit while the limiter is disabled', () => {
|
|
expect(parseLimit('', 1536, 'MB/s')).toEqual({ value: 1.5, unit: 'MB/s' });
|
|
expect(parseLimit('', 1536, 'KB/s')).toEqual({ value: 1536, unit: 'KB/s' });
|
|
});
|
|
|
|
it('allows sub-one MB/s values while enforcing the 1 KiB backend minimum', () => {
|
|
expect(clampSpeedDisplayValue(0.5, 'MB/s')).toBe(0.5);
|
|
expect(clampSpeedDisplayValue(0, 'MB/s')).toBe(1 / 1024);
|
|
expect(clampSpeedDisplayValue(0, 'KB/s')).toBe(1);
|
|
});
|
|
|
|
it('shows the exact stored preset value instead of a rounded label', () => {
|
|
expect(formatPresetValue(1.46484375)).toBe('1.46484375');
|
|
});
|
|
});
|