package config import ( "path/filepath" "reflect" "testing" ) func TestTextPreferencesPersistAndInheritByApplication(t *testing.T) { store, err := NewStore(filepath.Join(t.TempDir(), "settings.toml")) if err != nil { t.Fatal(err) } global := DefaultSettings() global.Pronunciations = []PronunciationEntry{{Word: "SQL", Replacement: "sequel"}} global.TextAttributes.Choices[0].Speak = false global.TextAttributes.Choices[0].Braille = true global.TextAttributes.Indicator = 0x40 if err := store.Save(global); err != nil { t.Fatal(err) } loaded, err := store.Load() if err != nil || !reflect.DeepEqual(loaded.Pronunciations, global.Pronunciations) || !reflect.DeepEqual(loaded.TextAttributes, global.TextAttributes) { t.Fatalf("loaded preferences = %+v, %+v, %v", loaded.Pronunciations, loaded.TextAttributes, err) } app := cloneSettings(global) app.Pronunciations = []PronunciationEntry{{Word: "SQL", Replacement: "S Q L"}} app.TextAttributes.Choices[0], app.TextAttributes.Choices[1] = app.TextAttributes.Choices[1], app.TextAttributes.Choices[0] app.TextAttributes.Indicator = 0xc0 if err := store.SaveForApplication("Editor", app); err != nil { t.Fatal(err) } actual, found, err := store.LoadForApplication("Editor") if err != nil || !found || !reflect.DeepEqual(actual.Pronunciations, app.Pronunciations) || !reflect.DeepEqual(actual.TextAttributes, app.TextAttributes) { t.Fatalf("application preferences = %+v, %+v, %t, %v", actual.Pronunciations, actual.TextAttributes, found, err) } }