46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
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)
|
||
|
|
}
|
||
|
|
}
|