 		}
 	}
 
+	func assertIsMapValue(_ value: String?, file: StaticString = #file, line: UInt = #line) {
+		XCTAssertEqual(value, self.mapValue, "The value should be the map value.", file: file, line: line)
+	}
+
+	func assertIsMapError(_ error: Error?, file: StaticString = #file, line: UInt = #line) {
+		if let error = error as? TestError, error == self.mapError {} else {
+			XCTFail("The error should be the map error.", file: file, line: line)
+		}
+	}
+
 	func assertIsSuccessWithSetupValue(_ result: Result<Int>, file: StaticString = #file, line: UInt = #line) {
 		if case .success(let value) = result {
 			assertIsSetupValue(value, file: file, line: line)

		}
	}

	// MARK: - Private utilities

	private struct TestError: Error, Equatable {

			XCTFail("The result should be a `failure`.", file: file, line: line)
		}
	}

	func assertIsSuccessWithMapValue(_ result: Result<String>, file: StaticString = #file, line: UInt = #line) {
		if case .success(let value) = result {
			assertIsMapValue(value, file: file, line: line)
		} else {
			XCTFail("The result should be a `success`.", file: file, line: line)
		}
	}

	func assertIsFailureWithMapError <T> (_ result: Result<T>, file: StaticString = #file, line: UInt = #line) {
		if case .failure(let error) = result {
			assertIsMapError(error, file: file, line: line)
		} else {
			XCTFail("The result should be a `failure`.", file: file, line: line)
		}
	}
}
