package common import ( "encoding/json" "fmt" "os" "path/filepath" "testing" ) func TestSceneMetadataDoesNotAddGroupsFromAnotherDimension(t *testing.T) { root, err := filepath.Abs(filepath.Join("..", "..")) if err != nil { t.Fatal(err) } config, err := os.ReadFile(filepath.Join(root, "server.json")) if err != nil { t.Fatal(err) } var version struct { ClientVersion string `json:"client_version"` } if err := json.Unmarshal(config, &version); err != nil { t.Fatal(err) } directory := t.TempDir() if err := os.Mkdir(filepath.Join(directory, "resources"), 0755); err != nil { t.Fatal(err) } configPath := filepath.Join(directory, "server.json") if err := os.WriteFile(configPath, config, 0600); err != nil { t.Fatal(err) } metadata := fmt.Sprintf(`{"client_version":%q,"floors":{"20":{ "group_count":3,"dimension_id":0,"dimension_groups":{"0":[10,12]}, "groups":{"10":{"load_side":"Server"},"11":{"load_side":"Server"},"12":{"load_side":"Server"}}, "props":{"10":[{"groupId":10,"instId":1}],"11":[{"groupId":11,"instId":1}],"12":[{"groupId":12,"instId":1}]} }}}`, version.ClientVersion) if err := os.WriteFile(filepath.Join(directory, "resources", "SceneMetadata.json"), []byte(metadata), 0600); err != nil { t.Fatal(err) } t.Chdir(directory) t.Setenv("GAC_CONFIG", configPath) scene := &LevelOutputConfig{Scenes: map[uint32]SceneData{10: {}, 11: {}}} res := &JsonConfig{LevelOutputConfigs: map[uint32]map[string]*LevelOutputConfig{1: {"P1_F20": scene}}} applySceneMetadata(res) if _, exists := scene.Scenes[11]; exists { t.Fatal("a server group from another dimension was retained or re-added") } for _, group := range []uint32{10, 12} { if len(scene.Scenes[group].Props) != 1 { t.Fatalf("eligible group %d must retain refreshed props", group) } } }