func TestCompare(t *testing.T) { … } var compareTests … func TestLang(t *testing.T) { … } var langTests … func TestIsLang(t *testing.T) { … } var isLangTests … func TestPrev(t *testing.T) { … } var prevTests … func TestIsValid(t *testing.T) { … } var isValidTests … type testCase1 … type testCase2 … type testCase3 … func test1[In, Out any](t *testing.T, tests []testCase1[In, Out], name string, f func(In) Out) { … } func test2[In1, In2, Out any](t *testing.T, tests []testCase2[In1, In2, Out], name string, f func(In1, In2) Out) { … } func test3[In1, In2, In3, Out any](t *testing.T, tests []testCase3[In1, In2, In3, Out], name string, f func(In1, In2, In3) Out) { … }