diff --git a/addons/xterm-addon-image/src/ImageStorage.ts b/addons/xterm-addon-image/src/ImageStorage.ts index 9ce3fa82..97eef852 100644 --- a/addons/xterm-addon-image/src/ImageStorage.ts +++ b/addons/xterm-addon-image/src/ImageStorage.ts @@ -149,8 +149,8 @@ export class ImageStorage implements IDisposable { } public setLimit(value: number): void { - if (value < 1 || value > 1000) { - throw RangeError('invalid storageLimit, should be at least 1 MB and not exceed 1G'); + if (value < 0.5 || value > 1000) { + throw RangeError('invalid storageLimit, should be at least 0.5 MB and not exceed 1G'); } this._pixelLimit = (value / 4 * 1000000) >>> 0; this._evictOldest(0); diff --git a/addons/xterm-addon-image/test/ImageAddon.api.ts b/addons/xterm-addon-image/test/ImageAddon.api.ts index 34a2eee1..5b43eb35 100644 --- a/addons/xterm-addon-image/test/ImageAddon.api.ts +++ b/addons/xterm-addon-image/test/ImageAddon.api.ts @@ -222,11 +222,11 @@ describe('ImageAddon', () => { assert.equal(usage as number < 1, true); }); it('set storageLimit removes images synchronously', async () => { - await writeToTerminal(SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0); + await writeToTerminal(SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0); const usage: number = await page.evaluate('imageAddon.storageUsage'); - const newUsage: number = await page.evaluate('imageAddon.storageLimit = 1; imageAddon.storageUsage'); + const newUsage: number = await page.evaluate('imageAddon.storageLimit = 0.5; imageAddon.storageUsage'); assert.equal(newUsage < usage, true); - assert.equal(newUsage < 1, true); + assert.equal(newUsage < 0.5, true); }); it('clear alternate images on buffer change', async () => { assert.equal(await page.evaluate('imageAddon.storageUsage'), 0); @@ -236,6 +236,7 @@ describe('ImageAddon', () => { assert.equal(await page.evaluate('imageAddon.storageUsage'), 0); }); it('evict tiles by in-place overwrites (only full overwrite tested)', async () => { + await new Promise(r => setTimeout(r, 50)); await writeToTerminal('\x1b[H' + SIXEL_SEQ_0 + '\x1b[100;100H'); let usage = await page.evaluate('imageAddon.storageUsage'); while (usage === 0) { @@ -243,8 +244,6 @@ describe('ImageAddon', () => { usage = await page.evaluate('imageAddon.storageUsage'); } await writeToTerminal('\x1b[H' + SIXEL_SEQ_0 + '\x1b[100;100H'); - await writeToTerminal('\x1b[H' + SIXEL_SEQ_0 + '\x1b[100;100H'); - await writeToTerminal('\x1b[H' + SIXEL_SEQ_0 + '\x1b[100;100H'); await new Promise(r => setTimeout(r, 200)); // wait some time and re-check assert.equal(await page.evaluate('imageAddon.storageUsage'), usage); });