fix: improve endgame clock and gameplay stability
This commit is contained in:
1 parent
ce6aabfc55
commit
658298ee86
46 files changed
+1915
-99
No files matched your search
@@ -0,0 +1,79 @@
|
||||
package sdkserver
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMaxCommandPreservesUnknownData(t *testing.T) {
|
||||
chdirRepoRootSDK(t)
|
||||
raw, err := os.ReadFile("freesr-data.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var root map[string]json.RawMessage
|
||||
if err = json.Unmarshal(raw, &root); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
root["future_root"] = json.RawMessage(`{"keep":true}`)
|
||||
var avatars map[string]json.RawMessage
|
||||
if err = json.Unmarshal(root["avatars"], &avatars); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var avatar map[string]json.RawMessage
|
||||
if err = json.Unmarshal(avatars["1204"], &avatar); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
avatar["future_avatar"] = json.RawMessage(`"preserved"`)
|
||||
avatars["1204"], _ = json.Marshal(avatar)
|
||||
root["avatars"], _ = json.Marshal(avatars)
|
||||
raw, _ = json.Marshal(root)
|
||||
if err = os.WriteFile("freesr-data.json", raw, 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
beforePersistent, err := os.ReadFile("persistent")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
w := httptest.NewRecorder()
|
||||
apiCommand(w, httptest.NewRequest(http.MethodPost, "/api/command", strings.NewReader(`{"command":"/max"}`)))
|
||||
var result struct {
|
||||
Success bool `json:"success"`
|
||||
}
|
||||
if err = json.Unmarshal(w.Body.Bytes(), &result); err != nil || !result.Success {
|
||||
t.Fatalf("command failed: %s (%v)", w.Body.String(), err)
|
||||
}
|
||||
raw, _ = os.ReadFile("freesr-data.json")
|
||||
if err = json.Unmarshal(raw, &root); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var futureRoot struct {
|
||||
Keep bool `json:"keep"`
|
||||
}
|
||||
if err = json.Unmarshal(root["future_root"], &futureRoot); err != nil || !futureRoot.Keep {
|
||||
t.Fatal("root data lost")
|
||||
}
|
||||
if err = json.Unmarshal(root["avatars"], &avatars); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err = json.Unmarshal(avatars["1204"], &avatar); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var data struct {
|
||||
Rank int `json:"rank"`
|
||||
}
|
||||
if err = json.Unmarshal(avatar["data"], &data); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if string(avatar["future_avatar"]) != `"preserved"` || string(avatar["level"]) != "80" || string(avatar["promotion"]) != "6" || data.Rank != 6 {
|
||||
t.Fatal("avatar fields lost or not updated")
|
||||
}
|
||||
afterPersistent, err := os.ReadFile("persistent")
|
||||
if err != nil || string(beforePersistent) != string(afterPersistent) {
|
||||
t.Fatal("persistent data was rewritten")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user