package dsl import "testing" func TestBuildProfileString(t *testing.T) { cases := []struct { p BuildProfile want string }{ {ProfileRelease, "release"}, {ProfileDebug, "debug"}, {ProfileSanitized, "sanitized"}, {ProfileUnset, "unset"}, {BuildProfile(999), "unset"}, } for _, c := range cases { if got := c.p.String(); got != c.want { t.Errorf("BuildProfile(%d).String() = %q, want %q", c.p, got, c.want) } } } func TestWarningLevelString(t *testing.T) { cases := []struct { w WarningLevel want string }{ {WarningsDefault, "default"}, {WarningsStrict, "strict"}, {WarningsPedantic, "pedantic"}, {WarningsUnset, "unset"}, {WarningLevel(999), "unset"}, } for _, c := range cases { if got := c.w.String(); got != c.want { t.Errorf("WarningLevel(%d).String() = %q, want %q", c.w, got, c.want) } } } func TestMergeFromWrapperAndDefines(t *testing.T) { dst := &BuildConfig{} src := &BuildConfig{ Wrapper: "valgrind", Defines: map[string]string{"DEBUG": "1", "VERSION": "2"}, } dst.MergeFrom(src) if dst.Wrapper != "valgrind" { t.Errorf("Wrapper = %q, want valgrind", dst.Wrapper) } if dst.Defines["DEBUG"] != "1" || dst.Defines["VERSION"] != "2" { t.Errorf("Defines = %v", dst.Defines) } } func TestMergeFromDefinesIntoExisting(t *testing.T) { dst := &BuildConfig{Defines: map[string]string{"KEEP": "old"}} src := &BuildConfig{Defines: map[string]string{"NEW": "1", "KEEP": "new"}} dst.MergeFrom(src) if dst.Defines["KEEP"] != "new" { t.Errorf("KEEP = %q, want new (overridden)", dst.Defines["KEEP"]) } if dst.Defines["NEW"] != "1" { t.Errorf("NEW = %q, want 1", dst.Defines["NEW"]) } } func TestMergeFromNilSrc(t *testing.T) { dst := &BuildConfig{Language: "c"} dst.MergeFrom(nil) if dst.Language != "c" { t.Errorf("dst mutated on nil merge: %+v", dst) } }