mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-06 17:38:06 +00:00
fix(settings): preserve speed limiter units
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.
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import {
|
||||
convertSpeedValue,
|
||||
clampSpeedDisplayValue,
|
||||
displayValueFromPresetBase,
|
||||
formatSpeedLimitForStorage,
|
||||
formatPresetValue,
|
||||
parseLimit,
|
||||
presetBaseFromDisplayValue,
|
||||
} from './SpeedLimiterView';
|
||||
|
||||
@@ -20,4 +24,33 @@ describe('SpeedLimiterView speed conversions', () => {
|
||||
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');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user