File: test_save_game.py

package info (click to toggle)
lightyears 1.5.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 25,804 kB
  • sloc: python: 5,532; sh: 39; makefile: 6
file content (56 lines) | stat: -rw-r--r-- 1,931 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#
# 20,000 Light Years Into Space
# This game is licensed under GPL v2, and copyright (C) Jack Whitham 2006-21.
#

from lib20k import game_random, game, save_game
from lib20k import mail
from lib20k.ui import User_Interface
from lib20k.primitives import *
from .unit_test import *


def test_Save_Restore() -> None:
    """Test for save_game.py.

    This is a test of the actual savegame feature. We set up
    a fake game, save it, restore it, and also try restoring
    nonsense. Checked using assertions."""

    test_screen = Setup_For_Unit_Test()
    demo = game_random.Game_Random(1)
    clock = pygame.time.Clock()
    game_loop = game.Game(clock=clock,
                    restore_pos=None,
                    challenge=MenuCommand.INTERMEDIATE, event=Fake_Events([]),
                    playback_mode=PlayMode.OFF,
                    playback_file=None,
                    record_file=None)
    g = game_loop.g
    ui = game_loop.ui
    assert ui.net == g.net
    g.historian_time = 999.0

    assert g.net.demo.random() >= -1.0      # check that random numbers can be generated
    result = save_game.Save(g, MenuCommand.SAVE9, "test save")
    assert result is None
    assert g.net.demo.random() >= -1.0
    g.historian_time = 123.0

    g2 = game_loop.Restore(MenuCommand.SAVE9)
    assert g2 != g
    assert g2.net != g.net                  # network reloaded
    assert ui.net == g2.net                 # ui is updated correctly
    assert g2.historian_time == 999.0       # value restored correctly
    assert g2.net.demo.random() >= -1.0
    assert "Game restored" in mail.Get_Messages()
    g = g2

    # Overwrite save game with nonsense
    name = save_game.Make_Save_Name(MenuCommand.SAVE9)
    open(name, "wb").write(b"INVALID")

    # Try restoring - doesn't work
    g2 = game_loop.Restore(MenuCommand.SAVE9)
    assert g2 == g      # No reload
    assert "Error restoring file" in mail.Get_Messages()