Errors.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import Foundation
  2. // Generic
  3. internal func setFailureMessageForError<T: Error>(
  4. _ failureMessage: FailureMessage,
  5. postfixMessageVerb: String = "throw",
  6. actualError: Error?,
  7. error: T? = nil,
  8. errorType: T.Type? = nil,
  9. closure: ((T) -> Void)? = nil) {
  10. failureMessage.postfixMessage = "\(postfixMessageVerb) error"
  11. if let error = error {
  12. failureMessage.postfixMessage += " <\(error)>"
  13. } else if errorType != nil || closure != nil {
  14. failureMessage.postfixMessage += " from type <\(T.self)>"
  15. }
  16. if closure != nil {
  17. failureMessage.postfixMessage += " that satisfies block"
  18. }
  19. if error == nil && errorType == nil && closure == nil {
  20. failureMessage.postfixMessage = "\(postfixMessageVerb) any error"
  21. }
  22. if let actualError = actualError {
  23. failureMessage.actualValue = "<\(actualError)>"
  24. } else {
  25. failureMessage.actualValue = "no error"
  26. }
  27. }
  28. internal func errorMatchesExpectedError<T: Error>(
  29. _ actualError: Error,
  30. expectedError: T) -> Bool {
  31. return actualError._domain == expectedError._domain
  32. && actualError._code == expectedError._code
  33. }
  34. // Non-generic
  35. internal func setFailureMessageForError(
  36. _ failureMessage: FailureMessage,
  37. actualError: Error?,
  38. closure: ((Error) -> Void)?) {
  39. failureMessage.postfixMessage = "throw error"
  40. if closure != nil {
  41. failureMessage.postfixMessage += " that satisfies block"
  42. } else {
  43. failureMessage.postfixMessage = "throw any error"
  44. }
  45. if let actualError = actualError {
  46. failureMessage.actualValue = "<\(actualError)>"
  47. } else {
  48. failureMessage.actualValue = "no error"
  49. }
  50. }