Files
leggenda-del-regolo/tests/storage.test.mjs
T
manzoloandClaude Opus 5.5 33e2598718 Musica, vecchietti con sprite, nuove scene del paese e generatore degli sfondi
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
2026-10-23 12:59:57 +02:00

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);
});