package test import ( "fmt" "reflect" "testing" ) type ConfigTestData[C comparable] struct { S string Cfg C } func ParseConfigTester[C comparable](t *testing.T, parser func(s string) (*C, error), tests []ConfigTestData[C]) { for i, test := range tests { t.Run(fmt.Sprint(i), func(t *testing.T) { cfg, err := parser(test.S) if err != nil { t.Fatalf("%s failed: %v", test.S, err) } if !reflect.DeepEqual(*cfg, test.Cfg) { t.Fatalf("input: %s\n wrong config, want:\n %#v\ngot:\n %#v", test.S, test.Cfg, *cfg) } }) } }