62 lines
2.2 KiB
Go
62 lines
2.2 KiB
Go
package main
|
||
|
||
import (
|
||
"testing"
|
||
"time"
|
||
)
|
||
|
||
func TestSaveLoadStoryModeStateRoundTrip(t *testing.T) {
|
||
withTempConfigDir(t)
|
||
s := NewStoryModeState(StoryDifficultyHard, time.Now())
|
||
s.RecordWin(StoryResChess)
|
||
s.RecordWin(StoryResChess)
|
||
s.Locked[StoryResGo] = true
|
||
s.Resources[StoryResGo] = StoryTargetGo
|
||
|
||
if err := SaveStoryModeState(s); err != nil {
|
||
t.Fatalf("неожиданная ошибка сохранения: %v", err)
|
||
}
|
||
|
||
loaded, err := LoadStoryModeState()
|
||
if err != nil {
|
||
t.Fatalf("неожиданная ошибка загрузки: %v", err)
|
||
}
|
||
if loaded.Difficulty != StoryDifficultyHard {
|
||
t.Errorf("сложность не сохранилась корректно, получено %v", loaded.Difficulty)
|
||
}
|
||
if loaded.Resources[StoryResChess] != storyStartingAmount+2 {
|
||
t.Errorf("ресурс шахмат не сохранился корректно, получено %d", loaded.Resources[StoryResChess])
|
||
}
|
||
if !loaded.Locked[StoryResGo] {
|
||
t.Errorf("запертый ресурс Го должен был остаться запертым после загрузки")
|
||
}
|
||
}
|
||
|
||
func TestLoadStoryModeStateNoSaveReturnsErr(t *testing.T) {
|
||
withTempConfigDir(t)
|
||
_, err := LoadStoryModeState()
|
||
if err != ErrStoryModeNoSave {
|
||
t.Errorf("ожидалась ошибка ErrStoryModeNoSave при отсутствии сохранения, получено: %v", err)
|
||
}
|
||
}
|
||
|
||
func TestDeleteStoryModeSaveRemovesFile(t *testing.T) {
|
||
withTempConfigDir(t)
|
||
s := NewStoryModeState(StoryDifficultyEasy, time.Now())
|
||
if err := SaveStoryModeState(s); err != nil {
|
||
t.Fatalf("неожиданная ошибка сохранения: %v", err)
|
||
}
|
||
if err := DeleteStoryModeSave(); err != nil {
|
||
t.Fatalf("неожиданная ошибка удаления: %v", err)
|
||
}
|
||
if _, err := LoadStoryModeState(); err != ErrStoryModeNoSave {
|
||
t.Errorf("после удаления сохранения ожидалась ErrStoryModeNoSave, получено: %v", err)
|
||
}
|
||
}
|
||
|
||
func TestDeleteStoryModeSaveWithoutExistingFileIsNotError(t *testing.T) {
|
||
withTempConfigDir(t)
|
||
if err := DeleteStoryModeSave(); err != nil {
|
||
t.Errorf("удаление отсутствующего сохранения не должно быть ошибкой, получено: %v", err)
|
||
}
|
||
}
|