 import URBNConvenience
 
 class ResultTypeTests: XCTestCase {
+
+    fileprivate enum ResultTestError: Error {
+        case testErrorCase
+    }
     
     func testResultEmptySuccess() {
         

    
    func testResultFailure() {
        
        let result = Result(RouterError.invalidRequest)
        XCTAssert(result == Result.failure(RouterError.invalidRequest), "Result instantiated with an error should be .failure(error)")
        XCTAssertEqual(result.error as? RouterError, RouterError.invalidRequest, "`error` should be populated and equal to the initial value")
        // TODO: Ensure changing this test makes sense... it was checking false
        XCTAssertEqual(result.isEmpty, true, "`isEmpty` should be false on .failure results")
        XCTAssertNil(result.value, "`value` should be nil on .failure results")

        //This one is busted because we no logner have emptyResponse types and instead us NoResponseType. This case should not arise. Need to make sure client apps play nice
        //XCTAssertTrue(Result<String>(nil) == Result<Any>(nil), ".emptySuccess should be equal regardless of the generic type")
        
        XCTAssertFalse(Result<NoResponseType>(nil) == Result(ResultTestError.testErrorCase), ".emptySuccess should not equal .failure results")
        XCTAssertFalse(Result("") == Result(ResultTestError.testErrorCase), ".success should not equal .failure results")
        XCTAssertFalse(Result(SomeItem()) == Result(SomeItem()), ".success should not equal .success if Value type is not Equatable")
        
        // Failure should equal failure regardless of type
        XCTAssertTrue(Result<String>(ResultTestError.testErrorCase) == Result<Any>(ResultTestError.testErrorCase), ".failure should equal .failure if errors are same")
        XCTAssertTrue(Result<Any>(ResultTestError.testErrorCase) == Result<Any>(ResultTestError.testErrorCase), ".failure should equal .failure if errors are same")
    }
    
    func testSuccessResultHandlers() {
