-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathruntime_config_test.go
More file actions
80 lines (69 loc) · 2.52 KB
/
Copy pathruntime_config_test.go
File metadata and controls
80 lines (69 loc) · 2.52 KB
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
* Copyright (c) 2021 The XGo Authors (xgo.dev). All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package spx
import (
"os"
"path/filepath"
"testing"
coreproject "github.com/goplus/spx/v2/internal/core/project"
itime "github.com/goplus/spx/v2/internal/time"
)
func TestApplyStoredRuntimeConfigReusesResolvedInput(t *testing.T) {
t.Setenv("SPX_SCREENSHOT_KEY", "")
seed := int64(42)
conf := Config{
Width: 640,
Height: 480,
FullScreen: true,
EventQueuePolicy: "block",
Deterministic: true,
RandomSeed: &seed,
}
var game Game
defer itime.SetFixedDeltaTime(0)
defer ResetRandomSeed()
proj := coreproject.ProjectConfig{}
game.applyRuntimeConfig(&conf, &proj)
cwd, _ := os.Getwd()
wantTitle := filepath.Base(cwd) + " (by XGo Builder)"
if game.runtimeConfigInput.Title != wantTitle {
t.Fatalf("runtimeConfigInput.Title = %q, want %q", game.runtimeConfigInput.Title, wantTitle)
}
if !proj.FullScreen {
t.Fatal("applyRuntimeConfig did not propagate fullscreen override")
}
if got := game.gameRuntimeState.EventQueuePolicy; got != parseEventQueuePolicy("block") {
t.Fatalf("EventQueuePolicy = %v, want block", got)
}
if game.displayState.WindowWidth != 640 || game.displayState.WindowHeight != 480 {
t.Fatalf("window size = %dx%d, want 640x480", game.displayState.WindowWidth, game.displayState.WindowHeight)
}
gotA := []float64{Rand__0(1, 10), Rand__1(0, 1)}
proj = coreproject.ProjectConfig{}
game.applyStoredRuntimeConfig(&proj)
if !proj.FullScreen {
t.Fatal("applyStoredRuntimeConfig did not reuse stored fullscreen override")
}
if game.displayState.WindowWidth != 640 || game.displayState.WindowHeight != 480 {
t.Fatalf("reapplied window size = %dx%d, want 640x480", game.displayState.WindowWidth, game.displayState.WindowHeight)
}
gotB := []float64{Rand__0(1, 10), Rand__1(0, 1)}
for i := range gotA {
if gotA[i] != gotB[i] {
t.Fatalf("stored runtime config did not reset deterministic random at %d: %v vs %v", i, gotA, gotB)
}
}
}