| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // Package assertions contains the implementations for all assertions which
- // are referenced in the convey package for use with the So(...) method.
- package assertions
- // This function is not used by the goconvey library. It's actually a convenience method
- // for running assertions on arbitrary arguments outside of any testing context, like for
- // application logging. It allows you to perform assertion-like behavior (and get nicely
- // formatted messages detailing discrepancies) but without the probram blowing up or panicking.
- // All that is required is to import this package and call `So` with one of the assertions
- // exported by this package as the second parameter.
- // The first return parameter is a boolean indicating if the assertion was true. The second
- // return parameter is the well-formatted message showing why an assertion was incorrect, or
- // blank if the assertion was correct.
- //
- // Example:
- //
- // if ok, message := So(x, ShouldBeGreaterThan, y); !ok {
- // log.Println(message)
- // }
- //
- func So(actual interface{}, assert assertion, expected ...interface{}) (bool, string) {
- serializer = noop
- if result := so(actual, assert, expected...); len(result) == 0 {
- return true, result
- } else {
- return false, result
- }
- }
- // so is like So, except that it only returns the string message, which is blank if the
- // assertion passed. Used to facilitate testing.
- func so(actual interface{}, assert func(interface{}, ...interface{}) string, expected ...interface{}) string {
- return assert(actual, expected...)
- }
- // assertion is an alias for a function with a signature that the So()
- // function can handle. Any future or custom assertions should conform to this
- // method signature. The return value should be an empty string if the assertion
- // passes and a well-formed failure message if not.
- type assertion func(actual interface{}, expected ...interface{}) string
- ////////////////////////////////////////////////////////////////////////////
|