package starlog import "testing" func attrsEqual(a []Attr, b []Attr) bool { if len(a) != len(b) { return false } for idx := range a { if a[idx] != b[idx] { return false } } return true } func TestGetKeywordPresetMobaLite(t *testing.T) { preset := GetKeywordPreset(KeywordPresetMobaLite) if len(preset) == 0 { t.Fatalf("moba lite preset should not be empty") } if _, ok := preset["error"]; !ok { t.Fatalf("moba lite preset should include error") } if _, ok := preset["true"]; !ok { t.Fatalf("moba lite preset should include true") } if _, ok := preset["ERROR"]; !ok { t.Fatalf("moba lite preset should include ERROR variant") } preset["__mutated__"] = []Attr{FgBlue} latest := GetKeywordPreset(KeywordPresetMobaLite) if _, ok := latest["__mutated__"]; ok { t.Fatalf("GetKeywordPreset should return a cloned map") } } func TestApplyKeywordPreset(t *testing.T) { logger := NewStarlog(nil) logger.SetKeywordColor("custom", []Attr{FgBlue}) logger.ApplyKeywordPreset(KeywordPresetMobaLite) colors := logger.GetKeywordColors() if _, ok := colors["custom"]; ok { t.Fatalf("ApplyKeywordPreset should replace existing keyword map") } if _, ok := colors["error"]; !ok { t.Fatalf("ApplyKeywordPreset should include preset keywords") } } func TestMergeKeywordPreset(t *testing.T) { logger := NewStarlog(nil) logger.SetKeywordColor("custom", []Attr{FgCyan}) logger.SetKeywordColor("error", []Attr{FgBlue}) logger.MergeKeywordPreset(KeywordPresetMobaLite) colors := logger.GetKeywordColors() if _, ok := colors["true"]; !ok { t.Fatalf("MergeKeywordPreset should include preset keywords") } if _, ok := colors["custom"]; !ok { t.Fatalf("MergeKeywordPreset should keep existing custom keyword") } got := colors["error"] want := []Attr{FgBlue} if !attrsEqual(got, want) { t.Fatalf("existing keyword color should override preset, got %v", got) } } func TestKeywordPresetUnknownNoOp(t *testing.T) { logger := NewStarlog(nil) logger.SetKeywordColor("keep", []Attr{FgGreen}) logger.ApplyKeywordPreset(KeywordPreset("unknown")) afterApply := logger.GetKeywordColors() if _, ok := afterApply["keep"]; !ok { t.Fatalf("ApplyKeywordPreset unknown preset should not change map") } logger.MergeKeywordPreset(KeywordPreset("unknown")) afterMerge := logger.GetKeywordColors() if _, ok := afterMerge["keep"]; !ok { t.Fatalf("MergeKeywordPreset unknown preset should not change map") } }