mas/MasKitTests/ResultPredicates.swift
Ben Chatelain 5be95132e9 ♻️ Introduce AppLibrary, SoftwareProduct protocols
for easy dependency injection
2018-12-27 15:24:20 -07:00

34 lines
1.1 KiB
Swift

//
// ResultPreticates.swift
// MasKitTests
//
// Created by Ben Chatelain on 12/27/18.
// Copyright © 2018 mas-cli. All rights reserved.
//
@testable import MasKit
import Result
import Nimble
/// Nimble predicate for result enum success case, no associated value
func beSuccess() -> Predicate<Result<(), MASError>> {
return Predicate.define("be <success>") { expression, message in
if let actual = try expression.evaluate(),
case .success = actual {
return PredicateResult(status: .matches, message: message)
}
return PredicateResult(status: .fail, message: message)
}
}
/// Nimble predicate for result enum failure with associated error
func beFailure(test: @escaping (MASError) -> Void = { _ in }) -> Predicate<Result<(), MASError>> {
return Predicate.define("be <failure>") { expression, message in
if let actual = try expression.evaluate(),
case let .failure(error) = actual {
test(error)
return PredicateResult(status: .matches, message: message)
}
return PredicateResult(status: .fail, message: message)
}
}