diff --git a/src/game/SaveGame.test.ts b/src/game/SaveGame.test.ts new file mode 100644 index 0000000..5acc179 --- /dev/null +++ b/src/game/SaveGame.test.ts @@ -0,0 +1,32 @@ +import "jest" +import { saveGameKey, saveGame, loadGame } from './SaveGame'; + +describe("SaveGame", () => { + const state = { + Level: 42, + Score: 89, + }; + + beforeEach(() => { + localStorage.clear(); + }); + + test("save game", () => { + saveGame(state); + const inStore = localStorage.getItem(saveGameKey); + expect(inStore).not.toBeNull(); + const loaded = JSON.parse(inStore as string); + expect(loaded).toEqual(state); + }); + + test("save game not exists", () => { + const loaded = loadGame(); + expect(loaded).toBeNull(); + }); + + test("load game", () => { + saveGame(state); + const loaded = loadGame(); + expect(loaded).toEqual(state); + }); +}); diff --git a/src/game/SaveGame.ts b/src/game/SaveGame.ts new file mode 100644 index 0000000..bbab9ac --- /dev/null +++ b/src/game/SaveGame.ts @@ -0,0 +1,20 @@ +export const saveGameKey = "save_game"; + +export interface SaveGame { + Level: number + Score: number +} + +export function saveGame(saveGame: SaveGame) { + localStorage.setItem(saveGameKey, JSON.stringify(saveGame)); +} + +export function loadGame(): SaveGame | null { + const saveGame = localStorage.getItem(saveGameKey); + + if(saveGame) { + return JSON.parse(saveGame); + } + + return null; +}