Lavoro della sessione precedente: colonna sonora (titolo, paese, ricordi) con muto e volume, vecchietta e vecchietto sulla panchina, scene di Pieve, oratorio, Via de' Medici, Villa Adami, salita, campeggio, Bosco ai Frati e viale dei cipressi, panorama dell'introduzione, tools/genera.py per gli sfondi dalle foto. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UdeKd62opy9PKgpQXtVctF
33 lines
1.3 KiB
JavaScript
33 lines
1.3 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { readSave, writeSave, clearSave, readAudio, writeAudio } from '../src/engine/storage.js';
|
|
import { memoryStorage } from './helpers.mjs';
|
|
|
|
test('scrive, rilegge e cancella il salvataggio', () => {
|
|
const s = memoryStorage();
|
|
assert.equal(readSave(s), null);
|
|
assert.ok(writeSave(s, { scene: 'piazza' }));
|
|
assert.deepEqual(readSave(s), { scene: 'piazza' });
|
|
assert.ok(clearSave(s));
|
|
assert.equal(readSave(s), null);
|
|
});
|
|
|
|
test('un archivio rotto o bloccato non fa cadere il gioco', () => {
|
|
const broken = { getItem() { throw new Error('bloccato'); }, setItem() { throw new Error('pieno'); }, removeItem() { throw new Error('no'); } };
|
|
assert.equal(readSave(broken), null);
|
|
assert.equal(writeSave(broken, {}), false);
|
|
assert.equal(clearSave(broken), false);
|
|
const garbage = memoryStorage();
|
|
garbage.setItem('leggenda-regolo-save', '{non è json');
|
|
assert.equal(readSave(garbage), null);
|
|
});
|
|
|
|
test('volume e muto della musica si ricordano', () => {
|
|
const s = memoryStorage();
|
|
assert.equal(readAudio(s), null);
|
|
assert.ok(writeAudio(s, { volume: 0.3, muted: true }));
|
|
assert.deepEqual(readAudio(s), { volume: 0.3, muted: true });
|
|
s.setItem('leggenda-regolo-audio', '{rotto');
|
|
assert.equal(readAudio(s), null);
|
|
});
|