func PanicsStrLoop(tests []PanicStrTest, wantStrAll *string, notPanicFunc func(testName string),
	notContainsFunc func(testName string, wantStr string, pVal interface{}),
) {
	var realWantStr string
	var didPanic, pContainsStr bool
	var pVal interface{}

	for _, test := range tests {
		if wantStrAll != nil {
			realWantStr = *wantStrAll
		} else {
			realWantStr = test.WantStr
		}
		didPanic, pContainsStr, pVal = PanicsStr(test.F, realWantStr)
		if !didPanic {
			notPanicFunc(test.Name)
		} else if !pContainsStr {
			notContainsFunc(test.Name, realWantStr, pVal)
		}
	}
}
// PanicsStrLoop runs through a slice of panic tests, including checking the panic values to make sure they contain
// specific strings.  For any test function that does not panic, notPanicFunc is called with the name from the test's
// struct.  For any test function that does panic, but for which the panic value cannot be cast to a string or error
// containing the test's WantStr, notContainsFunc is called with test information and the panic value.  If wantStrAll
// is not nil, it is used in place of the tests' wantStrs.  See also PanicsStr().
//
// See NotContainsFuncErrorFactory() and NotContainsFuncFatalFactory() for good starting points for notContainsFunc.
PanicsStrLoop runs through a slice of panic tests, including checking the panic values to make sure they contain
specific strings.  For any test function that does not panic, notPanicFunc is called with the name from the test's
struct.  For any test function that does panic, but for which the panic value cannot be cast to a string or error
containing the test's WantStr, notContainsFunc is called with test information and the panic value.  If wantStrAll
is not nil, it is used in place of the tests' wantStrs.  See also PanicsStr().

See NotContainsFuncErrorFactory() and NotContainsFuncFatalFactory() for good starting points for notContainsFunc.
// PanicsStrLoop runs through a slice of panic tests including checking the panic values to make sure they contain // specific strings . For any test function that does not panic notPanicFunc is called with the name from the test ' s // struct . For any test function that does panic but for which the panic value cannot be cast to a string or error // containing the test ' s WantStr notContainsFunc is called with test information and the panic value . If wantStrAll // is not nil it is used in place of the tests ' wantStrs . See also PanicsStr () . // // See NotContainsFuncErrorFactory () and NotContainsFuncFatalFactory () for good starting points for notContainsFunc .
func PanicsStrLoop(tests []PanicStrTest, wantStrAll *string, notPanicFunc func(testName string),
	notContainsFunc func(testName string, wantStr string, pVal interface{}),
) {
	var realWantStr string
	var didPanic, pContainsStr bool
	var pVal interface{}
	for _, test := range tests {
		if wantStrAll != nil {
			realWantStr = *wantStrAll
		} else {
			realWantStr = test.WantStr
		}
		didPanic, pContainsStr, pVal = PanicsStr(test.F, realWantStr)
		if !didPanic {
			notPanicFunc(test.Name)
		} else if !pContainsStr {
			notContainsFunc(test.Name, realWantStr, pVal)
		}
	}
}
func PanicsStrLoop ( tests [ ] PanicStrTest , wantStrAll * string , notPanicFunc func ( testName string ) , notContainsFunc func ( testName string , wantStr string , pVal interface { } ) , ) { var realWantStr string var didPanic , pContainsStr bool var pVal interface { } for _ , test := range tests { if wantStrAll != nil { realWantStr = * wantStrAll } else { realWantStr = test . WantStr } didPanic , pContainsStr , pVal = PanicsStr ( test . F , realWantStr ) if ! didPanic { notPanicFunc ( test . Name ) } else if ! pContainsStr { notContainsFunc ( test . Name , realWantStr , pVal ) } } }
PanicsStrLoop runs through a slice of panic tests, including checking the panic values to make sure they contain
specific strings.
PanicsStrLoop runs through a slice of panic tests including checking the panic values to make sure they contain specific strings .