docs & feat: add license & attribution notice (Apache-2.0 / GPL-3.0) and core system enhancements
This commit is contained in:
1 parent
507836d367
commit
ce6aabfc55
47 files changed
+5674
-724
No files matched your search
@@ -0,0 +1,57 @@
|
||||
package sdkserver
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestTeleportPersistsLocationAndReportsWriteFailure(t *testing.T) {
|
||||
chdirRepoRootSDK(t)
|
||||
body := `{"plane_id":20411,"floor_id":20411001,"entry_id":2041101,"x":123,"y":-456,"z":789,"rot_y":321}`
|
||||
invoke := func() map[string]any {
|
||||
t.Helper()
|
||||
w := httptest.NewRecorder()
|
||||
apiTeleport(w, httptest.NewRequest(http.MethodPost, "/api/teleport", strings.NewReader(body)))
|
||||
var result map[string]any
|
||||
if err := json.Unmarshal(w.Body.Bytes(), &result); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return result
|
||||
}
|
||||
if result := invoke(); result["status"] != float64(200) {
|
||||
t.Fatalf("save response: %v", result)
|
||||
}
|
||||
raw, err := os.ReadFile("persistent")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var saved struct {
|
||||
Scene struct {
|
||||
FloorID uint32 `json:"floor_id"`
|
||||
}
|
||||
Position struct {
|
||||
X int32 `json:"x"`
|
||||
Y int32 `json:"y"`
|
||||
}
|
||||
}
|
||||
if err := json.Unmarshal(raw, &saved); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if saved.Scene.FloorID != 20411001 || saved.Position.X != 123 || saved.Position.Y != -456 {
|
||||
t.Fatalf("saved location: %+v", saved)
|
||||
}
|
||||
if err := os.WriteFile("persistent", []byte("invalid json"), 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if result := invoke(); result["status"] != float64(500) {
|
||||
t.Fatalf("expected save failure, got %v", result)
|
||||
}
|
||||
raw, _ = os.ReadFile("persistent")
|
||||
if string(raw) != "invalid json" {
|
||||
t.Fatalf("invalid save was overwritten: %q", raw)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user