code: func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {
  	if h, ok := t.(tHelper); ok {
  		h.Helper()
  	}
  
  	funcDidPanic, panicValue := didPanic(f)
  	if !funcDidPanic {
  		return Fail(t, fmt.Sprintf("func %#v should panic\n\tPanic value:\t%#v", f, panicValue), msgAndArgs...)
  	}
  	if panicValue != expected {
  		return Fail(t, fmt.Sprintf("func %#v should panic with value:\t%#v\n\tPanic value:\t%#v", f, expected, panicValue), msgAndArgs...)
  	}
  
  	return true
  }
docs: // PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that
  // the recovered panic value equals the expected panic value.
  //
  //   assert.PanicsWithValue(t, "crazy error", func(){ GoCrazy() })