Explorar o código

Added Result tests pushing code coverage for Result enum to 100%.

Christian Noon %!s(int64=10) %!d(string=hai) anos
pai
achega
574e3033d6
Modificáronse 2 ficheiros con 200 adicións e 0 borrados
  1. 6 0
      Alamofire.xcodeproj/project.pbxproj
  2. 194 0
      Tests/ResultTests.swift

+ 6 - 0
Alamofire.xcodeproj/project.pbxproj

@@ -57,6 +57,8 @@
 		4C812C641B535F6D0017E0BF /* root-ca-disig.cer in Resources */ = {isa = PBXBuildFile; fileRef = 4C812C5F1B535F6D0017E0BF /* root-ca-disig.cer */; };
 		4C812C651B535F6D0017E0BF /* testssl-expire.disig.sk.cer in Resources */ = {isa = PBXBuildFile; fileRef = 4C812C601B535F6D0017E0BF /* testssl-expire.disig.sk.cer */; };
 		4C812C661B535F6D0017E0BF /* testssl-expire.disig.sk.cer in Resources */ = {isa = PBXBuildFile; fileRef = 4C812C601B535F6D0017E0BF /* testssl-expire.disig.sk.cer */; };
+		4CA028C51B7466C500C84163 /* ResultTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA028C41B7466C500C84163 /* ResultTests.swift */; };
+		4CA028C61B7466C500C84163 /* ResultTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA028C41B7466C500C84163 /* ResultTests.swift */; };
 		4CCFA79A1B2BE71600B6F460 /* URLProtocolTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CCFA7991B2BE71600B6F460 /* URLProtocolTests.swift */; };
 		4CCFA79B1B2BE71600B6F460 /* URLProtocolTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CCFA7991B2BE71600B6F460 /* URLProtocolTests.swift */; };
 		4CDE2C371AF8932A00BABAE5 /* Manager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CDE2C361AF8932A00BABAE5 /* Manager.swift */; };
@@ -154,6 +156,7 @@
 		4C812C5E1B535F6D0017E0BF /* intermediate-ca-disig.cer */ = {isa = PBXFileReference; lastKnownFileType = file; name = "intermediate-ca-disig.cer"; path = "disig.sk/intermediate-ca-disig.cer"; sourceTree = "<group>"; };
 		4C812C5F1B535F6D0017E0BF /* root-ca-disig.cer */ = {isa = PBXFileReference; lastKnownFileType = file; name = "root-ca-disig.cer"; path = "disig.sk/root-ca-disig.cer"; sourceTree = "<group>"; };
 		4C812C601B535F6D0017E0BF /* testssl-expire.disig.sk.cer */ = {isa = PBXFileReference; lastKnownFileType = file; name = "testssl-expire.disig.sk.cer"; path = "disig.sk/testssl-expire.disig.sk.cer"; sourceTree = "<group>"; };
+		4CA028C41B7466C500C84163 /* ResultTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResultTests.swift; sourceTree = "<group>"; };
 		4CCFA7991B2BE71600B6F460 /* URLProtocolTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLProtocolTests.swift; sourceTree = "<group>"; };
 		4CDE2C361AF8932A00BABAE5 /* Manager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Manager.swift; sourceTree = "<group>"; };
 		4CDE2C391AF899EC00BABAE5 /* Request.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Request.swift; sourceTree = "<group>"; };
@@ -230,6 +233,7 @@
 				F8111E5C19A9674D0040E7D1 /* ParameterEncodingTests.swift */,
 				F8111E5D19A9674D0040E7D1 /* RequestTests.swift */,
 				F8111E5E19A9674D0040E7D1 /* ResponseTests.swift */,
+				4CA028C41B7466C500C84163 /* ResultTests.swift */,
 			);
 			name = Core;
 			sourceTree = "<group>";
@@ -735,6 +739,7 @@
 				4C3238E71B3604DB00FE04AE /* MultipartFormDataTests.swift in Sources */,
 				4C33A1431B52089C00873DFF /* ServerTrustPolicyTests.swift in Sources */,
 				4C341BBA1B1A865A00C1B34D /* CacheTests.swift in Sources */,
+				4CA028C51B7466C500C84163 /* ResultTests.swift in Sources */,
 				4CCFA79A1B2BE71600B6F460 /* URLProtocolTests.swift in Sources */,
 				F86AEFE71AE6A312007D9C76 /* TLSEvaluationTests.swift in Sources */,
 				F8858DDD19A96B4300F55F93 /* RequestTests.swift in Sources */,
@@ -756,6 +761,7 @@
 				4C3238E81B3604DB00FE04AE /* MultipartFormDataTests.swift in Sources */,
 				4C33A1441B52089C00873DFF /* ServerTrustPolicyTests.swift in Sources */,
 				4C341BBB1B1A865A00C1B34D /* CacheTests.swift in Sources */,
+				4CA028C61B7466C500C84163 /* ResultTests.swift in Sources */,
 				4CCFA79B1B2BE71600B6F460 /* URLProtocolTests.swift in Sources */,
 				F829C6BE1A7A950600A2CD59 /* ParameterEncodingTests.swift in Sources */,
 				F829C6BF1A7A950600A2CD59 /* RequestTests.swift in Sources */,

+ 194 - 0
Tests/ResultTests.swift

@@ -0,0 +1,194 @@
+// ResultTests.swift
+//
+// Copyright (c) 2014–2015 Alamofire Software Foundation (http://alamofire.org/)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+@testable import Alamofire
+import Foundation
+import XCTest
+
+class ResultTestCase: BaseTestCase {
+    let error = Error.errorWithCode(.StatusCodeValidationFailed, failureReason: "Status code validation failed")
+
+    // MARK: - Is Success Tests
+
+    func testThatIsSuccessPropertyReturnsTrueForSuccessCase() {
+        // Given
+        // When
+        let result = Result.Success("success")
+
+        // Then
+        XCTAssertTrue(result.isSuccess, "result is success should be true for success case")
+    }
+
+    func testThatIsSuccessPropertyReturnsFalseForFailureCase() {
+        // Given
+        // When
+        let result = Result<String>.Failure(NSData(), error)
+
+        // Then
+        XCTAssertFalse(result.isSuccess, "result is success should be true for failure case")
+    }
+
+    // MARK: - Is Failure Tests
+
+    func testThatIsFailurePropertyReturnsFalseForSuccessCase() {
+        // Given
+        // When
+        let result = Result.Success("success")
+
+        // Then
+        XCTAssertFalse(result.isFailure, "result is failure should be false for success case")
+    }
+
+    func testThatIsFailurePropertyReturnsTrueForFailureCase() {
+        // Given
+        // When
+        let result = Result<String>.Failure(NSData(), error)
+
+        // Then
+        XCTAssertTrue(result.isFailure, "result is failure should be true for failure case")
+    }
+
+    // MARK: - Value Tests
+
+    func testThatValuePropertyReturnsValueForSuccessCase() {
+        // Given
+        // When
+        let result = Result.Success("success")
+
+        // Then
+        XCTAssertEqual(result.value ?? "", "success", "result value should match expected value")
+    }
+
+    func testThatValuePropertyReturnsNilForFailureCase() {
+        // Given
+        // When
+        let result = Result<String>.Failure(NSData(), error)
+
+        // Then
+        XCTAssertNil(result.value, "result value should be nil for failure case")
+    }
+
+    // MARK: - Data Tests
+
+    func testThatDataPropertyReturnsNilForSuccessCase() {
+        // Given
+        // When
+        let result = Result.Success("success")
+
+        // Then
+        XCTAssertNil(result.data, "result data should be nil for success case")
+    }
+
+    func testThatDataPropertyReturnsDataForFailureCase() {
+        // Given
+        // When
+        let resultWithData = Result<String>.Failure(NSData(), error)
+        let resultWithoutData = Result<String>.Failure(nil, error)
+
+        // Then
+        XCTAssertNotNil(resultWithData.data, "result with data should not be nil for failure case")
+        XCTAssertNil(resultWithoutData.data, "result without data should be nil for failure case")
+    }
+
+    // MARK: - Error Tests
+
+    func testThatErrorPropertyReturnsNilForSuccessCase() {
+        // Given
+        // When
+        let result = Result.Success("success")
+
+        // Then
+        XCTAssertNil(result.error, "result error should be nil for success case")
+    }
+
+    func testThatErrorPropertyReturnsErrorForFailureCase() {
+        // Given
+        // When
+        let result = Result<String>.Failure(nil, error)
+
+        // Then
+        XCTAssertNotNil(result.error, "result error should not be nil for failure case")
+    }
+
+    // MARK: - Description Tests
+
+    func testThatDescriptionStringMatchesExpectedValueForSuccessCase() {
+        // Given
+        // When
+        let result = Result.Success("success")
+
+        // Then
+        XCTAssertEqual(result.description, "SUCCESS", "result description should match expected value for success case")
+    }
+
+    func testThatDescriptionStringMatchesExpectedValueForFailureCase() {
+        // Given
+        // When
+        let result = Result<String>.Failure(nil, error)
+
+        // Then
+        XCTAssertEqual(result.description, "FAILURE", "result description should match expected value for failure case")
+    }
+
+    // MARK: - Debug Description Tests
+
+    func testThatDebugDescriptionStringMatchesExpectedValueForSuccessCase() {
+        // Given
+        // When
+        let result = Result.Success("success value")
+
+        // Then
+        XCTAssertEqual(
+            result.debugDescription,
+            "SUCCESS: success value",
+            "result debug description should match expected value for success case"
+        )
+    }
+
+    func testThatDebugDescriptionStringMatchesExpectedValueForFailureCase() {
+        // Given
+        let utf8Data = "failure value".dataUsingEncoding(NSUTF8StringEncoding)!
+        let imageData = NSData(contentsOfURL: URLForResource("rainbow", withExtension: "jpg"))!
+
+        // When
+        let resultWithUTF8Data = Result<String>.Failure(utf8Data, error)
+        let resultWithImageData = Result<String>.Failure(imageData, error)
+        let resultWithNoData = Result<String>.Failure(nil, error)
+
+        // Then
+        XCTAssertEqual(
+            resultWithUTF8Data.debugDescription,
+            "FAILURE: \(error) failure value",
+            "result debug description should match expected value for failure case"
+        )
+        XCTAssertEqual(
+            resultWithImageData.debugDescription,
+            "FAILURE with Error: \(error)",
+            "result debug description should match expected value for failure case"
+        )
+        XCTAssertEqual(
+            resultWithNoData.debugDescription,
+            "FAILURE with Error: \(error)",
+            "result debug description should match expected value for failure case"
+        )
+    }
+}