123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package assertions
- import "fmt"
- // ShouldPanic receives a void, niladic function and expects to recover a panic.
- func ShouldPanic(actual interface{}, expected ...interface{}) (message string) {
- if fail := need(0, expected); fail != success {
- return fail
- }
- action, _ := actual.(func())
- if action == nil {
- message = shouldUseVoidNiladicFunction
- return
- }
- defer func() {
- recovered := recover()
- if recovered == nil {
- message = shouldHavePanicked
- } else {
- message = success
- }
- }()
- action()
- return
- }
- // ShouldNotPanic receives a void, niladic function and expects to execute the function without any panic.
- func ShouldNotPanic(actual interface{}, expected ...interface{}) (message string) {
- if fail := need(0, expected); fail != success {
- return fail
- }
- action, _ := actual.(func())
- if action == nil {
- message = shouldUseVoidNiladicFunction
- return
- }
- defer func() {
- recovered := recover()
- if recovered != nil {
- message = fmt.Sprintf(shouldNotHavePanicked, recovered)
- } else {
- message = success
- }
- }()
- action()
- return
- }
- // ShouldPanicWith receives a void, niladic function and expects to recover a panic with the second argument as the content.
- func ShouldPanicWith(actual interface{}, expected ...interface{}) (message string) {
- if fail := need(1, expected); fail != success {
- return fail
- }
- action, _ := actual.(func())
- if action == nil {
- message = shouldUseVoidNiladicFunction
- return
- }
- defer func() {
- recovered := recover()
- if recovered == nil {
- message = shouldHavePanicked
- } else {
- if equal := ShouldEqual(recovered, expected[0]); equal != success {
- message = serializer.serialize(expected[0], recovered, fmt.Sprintf(shouldHavePanickedWith, expected[0], recovered))
- } else {
- message = success
- }
- }
- }()
- action()
- return
- }
- // ShouldNotPanicWith receives a void, niladic function and expects to recover a panic whose content differs from the second argument.
- func ShouldNotPanicWith(actual interface{}, expected ...interface{}) (message string) {
- if fail := need(1, expected); fail != success {
- return fail
- }
- action, _ := actual.(func())
- if action == nil {
- message = shouldUseVoidNiladicFunction
- return
- }
- defer func() {
- recovered := recover()
- if recovered == nil {
- message = success
- } else {
- if equal := ShouldEqual(recovered, expected[0]); equal == success {
- message = fmt.Sprintf(shouldNotHavePanickedWith, expected[0])
- } else {
- message = success
- }
- }
- }()
- action()
- return
- }
|