Files
GaCy-GO/internal/sdkserver/api_game_clock_test.go
T

46 lines
1.3 KiB
Go
Raw Normal View History

package sdkserver
import (
"encoding/json"
"net/http/httptest"
"path/filepath"
"testing"
"gac-hkrpg-go/internal/common"
)
func TestFakeTimeWindowCommand(t *testing.T) {
chdirRepoRootSDK(t)
t.Setenv("GAC_CONFIG", "server.json")
t.Setenv("GAC_GAME_CLOCK_STATE_FILE", filepath.Join(t.TempDir(), "clock.json"))
call := func(command string) map[string]any {
t.Helper()
w := httptest.NewRecorder()
apiFakeTimeCommand(w, command)
var response map[string]any
if err := json.Unmarshal(w.Body.Bytes(), &response); err != nil {
t.Fatal(err)
}
return response
}
if result := call("/faketime window 1000 2000"); result["success"] != true || result["unix_seconds"] != float64(1500) {
t.Fatalf("window command: %v", result)
}
before, err := common.ReadGameClock()
if err != nil {
t.Fatal(err)
}
if result := call("/faketime window 2000 1000"); result["success"] != false {
t.Fatalf("invalid window accepted: %v", result)
}
after, err := common.ReadGameClock()
if err != nil || before != after {
t.Fatalf("invalid window changed clock: %+v %v", after, err)
}
if result := call("/faketime off"); result["success"] != true {
t.Fatalf("reset: %v", result)
}
if state, err := common.ReadGameClock(); err != nil || state.WindowEndMS != 0 {
t.Fatalf("reset did not remove window: %+v %v", state, err)
}
}