 		}
 	}
 
+	func test_whenMappingASuccess_thenItReturnsTheValueTransformed() {
+		let result = successResult.map({ _ in self.mapValue })
+		assertIsSuccessWithMapValue(result)
+	}
+
+	func test_whenMappingAFailure_thenItReturnsTheSameErrorAsBefore() {
+		let result = failureResult.map({ _ in self.mapValue })
+		assertIsFailureWithSetupError(result)
+	}
+
+	func test_whenFlatMappingASuccess_andTheTransformSucceeds_thenItReturnsTheValueTransformed() {
+		let result = successResult.flatMap({ _ in .success(self.mapValue) })
+		assertIsSuccessWithMapValue(result)
+	}
+
+	func test_whenFlatMappingASuccess_andTheTransformFails_thenItReturnsTheTransformError() {
+		let result = successResult.flatMap({ _ -> Result<String> in .failure(self.mapError) })
+		assertIsFailureWithMapError(result)
+	}
+
+	func test_whenFlatMappingAFailure_andTheTransformSucceeds_thenItReturnsTheSameErrorAsBefore() {
+		let result = failureResult.flatMap({ _ in .success(self.mapValue) })
+		assertIsFailureWithSetupError(result)
+	}
+
+	func test_whenFlatMappingAFailure_andTheTransformFails_thenItReturnsTheSameErrorAsBefore() {
+		let result = failureResult.flatMap({ _ -> Result<String> in .failure(self.mapError) })
+		assertIsFailureWithSetupError(result)
+	}
+
 	// MARK: - Private utilities
 
 	private struct TestError: Error, Equatable {

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

	private var error: TestError = .init(code: 42)
	private lazy var successResult: Result<Int> = .success(self.value)
	private lazy var failureResult: Result<Int> = .failure(self.error)
	private var mapValue: String = "1"
	private var mapError: TestError = .init(code: 88)
	
	// MARK: Unit tests

