30 lines
1.1 KiB
JavaScript
30 lines
1.1 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { FONT_SIZE_KEY, readFontSize, saveFontSize } from '../public/terminal-preferences.js';
|
|
|
|
test('terminal font size persists and falls back to 10 for missing or corrupt preferences', () => {
|
|
const values = new Map();
|
|
const storage = {
|
|
getItem: (key) => values.get(key) ?? null,
|
|
setItem: (key, value) => values.set(key, value)
|
|
};
|
|
assert.equal(readFontSize(storage), 10);
|
|
assert.equal(saveFontSize(18, storage), true);
|
|
assert.equal(readFontSize(storage), 18);
|
|
for (const value of ['garbage', '7', '33', '12.5', 'Infinity']) {
|
|
values.set(FONT_SIZE_KEY, value);
|
|
assert.equal(readFontSize(storage), 10);
|
|
}
|
|
assert.equal(saveFontSize(32, storage), true);
|
|
assert.equal(readFontSize(storage), 32);
|
|
});
|
|
|
|
test('blocked browser storage preserves the default and reports that saving failed', () => {
|
|
const storage = {
|
|
getItem: () => { throw new Error('Storage blocked'); },
|
|
setItem: () => { throw new Error('Storage blocked'); }
|
|
};
|
|
assert.equal(readFontSize(storage), 10);
|
|
assert.equal(saveFontSize(16, storage), false);
|
|
});
|