[
  {
    "path": ".gitignore",
    "content": "# Xcode\n#\nbuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\n\n## Playgrounds\ntimeline.xctimeline\nplayground.xcworkspace\n\n# Swift Package Manager\n#\n# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.\n# Packages/\n.build/\n\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: objective-c\nosx_image: xcode10.2\nscript:\n    - xcodebuild -project Tests/HTTPStatusCodes.xcodeproj -scheme HTTPStatusCodes clean build test\n    - xcodebuild -project Tests/HTTPStatusCodes.xcodeproj -scheme HTTPStatusCodes -destination \"platform=iOS Simulator,name=iPhone X\" clean build test\n    - xcodebuild -project Tests/HTTPStatusCodes.xcodeproj -scheme HTTPStatusCodes -destination \"platform=tvOS Simulator,name=Apple TV 4K\" clean build test\n"
  },
  {
    "path": "HTTPStatusCodes.podspec",
    "content": "Pod::Spec.new do |s|\n  s.name = 'HTTPStatusCodes'\n  s.version = '3.3.2'\n  s.license = 'MIT'\n  s.summary = 'Swift enum wrapper for easier handling of HTTP status codes'\n  s.homepage = 'https://github.com/rhodgkins/SwiftHTTPStatusCodes'\n  s.social_media_url = 'http://twitter.com/rhodgkins'\n  s.authors = 'Rich Hodgkins'\n  s.source = { :git => 'https://github.com/rhodgkins/SwiftHTTPStatusCodes.git', :tag => s.version }\n  \n  s.swift_versions = ['4.0', '4.2', '5.0']\n  \n  s.ios.deployment_target = '8.0'\n  s.osx.deployment_target = '10.9'\n  s.watchos.deployment_target = '2.0'\n  s.tvos.deployment_target = '9.0'\n\n  s.frameworks = 'Foundation'\n  s.source_files = 'Sources/*'\n\n  s.requires_arc = true\nend\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2017 Rich Hodgkins\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:4.0\n//\n//  Created by Richard Hodgkins on 07/06/2016.\n//  Copyright (c) 2016 Richard Hodgkins. All rights reserved.\n//\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"HTTPStatusCodes\",\n    products: [\n        .library(name: \"HTTPStatusCodes\", targets: [\"HTTPStatusCodes\"])\n    ],\n    targets: [\n        .target(\n            name: \"HTTPStatusCodes\",\n            path: \"Sources\"\n        ),\n        .testTarget(\n            name: \"HTTPStatusCodesTests\",\n            dependencies: [\"HTTPStatusCodes\"],\n            path: \"Tests/HTTPStatusCodesTests\",\n            sources: [\n                \"HTTPStatusCodesTests.swift\",\n                \"RegressionTests.swift\"\n            ]\n        )\n    ]\n)\n"
  },
  {
    "path": "README.md",
    "content": "# SwiftHTTPStatusCodes\n[![Build Status](https://travis-ci.org/rhodgkins/SwiftHTTPStatusCodes.svg?branch=master)](https://travis-ci.org/rhodgkins/SwiftHTTPStatusCodes)\n[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n[![Pod Version](http://img.shields.io/cocoapods/v/HTTPStatusCodes.svg)](http://cocoadocs.org/docsets/HTTPStatusCodes/)\n[![Pod Platform](http://img.shields.io/cocoapods/p/HTTPStatusCodes.svg)](http://cocoadocs.org/docsets/HTTPStatusCodes/)\n[![Pod License](http://img.shields.io/cocoapods/l/HTTPStatusCodes.svg)](http://opensource.org/licenses/MIT)\n\nSwift enum wrapper for easier handling of HTTP status codes. \n\nThe purpose of this library is to improve to clarify of code and remove the need for checking of status codes as numbers (`==200`), or as a range of values (`== 2xx`) - instead replacing it with descriptive enums.\n\nAll the [RF2616](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) standard status codes are supported with a few added ones from the [Wikipedia page](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes).\n\nAs of version 3.0.0 of this framework, the list of status codes are directly generated from a [online IANA CSV](http://www.iana.org/assignments/http-status-codes/http-status-codes-1.csv). The [HTML page](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) has a last updated field, and this is also mirrored in the header comments to identify which version this framework is currently using.<br/>\nIf this library is out of date compared to this page please open an issue and I will update the list.\n\n## Usage\n\n### Swift versions support\n\n* Swift 5.1 - use version 3.3.2\n* Swift 5 - use version 3.3.1\n* Swift 4 - use version 3.3.0\n* Swift 3 - use version 3.1\n* Older versions - use version 3.0\n\n### Swift Package Manager\n\nAdd this package to the dependencies in your `Package.swift` file:\n\n```swift\n.package(url: \"https://github.com/rhodgkins/SwiftHTTPStatusCodes.git\", .upToNextMajor(from: \"3.0.0\"))\n```\n\n### Carthage\n\n`Cartfile`:\n```ogdl\ngithub \"rhodgkins/SwiftHTTPStatusCodes\" ~> 3.3\n```\nSource code:\n```swift\nimport HTTPStatusCodes\n```\n\n### CocoaPods\n`Podfile`:\n```ruby\npod 'HTTPStatusCodes', '~> 3.3.0'\n```\nSource code:\n\n```swift\nimport HTTPStatusCodes\n```\n\n### Manually\nOr drop in the Swift files inside the [`Sources folder`](https://github.com/rhodgkins/SwiftHTTPStatusCodes/tree/master/Sources) into your project.\n\n## Helper methods\n\nThere are `Bool` properties on the enum for checking if a status code is of a certain category:\n```swift\nisInformational\nisSuccess\nisRedirection\nisClientError\nisServerError\n```\n\nThere is also an extension on `HTTPURLResponse` to obtain a status code enum directly and to `init` with one:\n```swift\nvar statusCodeValue: HTTPStatusCode?\ninit?(url: URL, statusCode: HTTPStatusCode, httpVersion: String?, headerFields: [String : String]?)\n```\n"
  },
  {
    "path": "Sources/HTTPStatusCodes+Extensions.swift",
    "content": "//\n//  HTTPStatusCodes+Extensions.swift\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 07/06/2016.\n//  Copyright © 2016 Rich H. All rights reserved.\n//\n\nimport Foundation\n\npublic extension HTTPStatusCode {\n    /// Informational - Request received, continuing process.\n    var isInformational: Bool {\n        return isIn(range: 100...199)\n    }\n    /// Success - The action was successfully received, understood, and accepted.\n    var isSuccess: Bool {\n        return isIn(range: 200...299)\n    }\n    /// Redirection - Further action must be taken in order to complete the request.\n    var isRedirection: Bool {\n        return isIn(range: 300...399)\n    }\n    /// Client Error - The request contains bad syntax or cannot be fulfilled.\n    var isClientError: Bool {\n        return isIn(range: 400...499)\n    }\n    /// Server Error - The server failed to fulfill an apparently valid request.\n    var isServerError: Bool {\n        return isIn(range: 500...599)\n    }\n    \n    /// - returns: `true` if the status code is in the provided range, false otherwise.\n    private func isIn(range: ClosedRange<HTTPStatusCode.RawValue>) -> Bool {\n        return range.contains(rawValue)\n    }\n}\n\npublic extension HTTPStatusCode {\n    /// - returns: a localized string suitable for displaying to users that describes the specified status code.\n    var localizedReasonPhrase: String {\n        return HTTPURLResponse.localizedString(forStatusCode: rawValue)\n    }\n}\n\n// MARK: - Printing\n\nextension HTTPStatusCode: CustomDebugStringConvertible, CustomStringConvertible {\n    public var description: String {\n        return \"\\(rawValue) - \\(localizedReasonPhrase)\"\n    }\n    public var debugDescription: String {\n        return \"HTTPStatusCode:\\(description)\"\n    }\n}\n\n// MARK: - HTTP URL Response\n\npublic extension HTTPStatusCode {\n    \n    /// Obtains a possible status code from an optional HTTP URL response.\n    init?(HTTPResponse: HTTPURLResponse?) {\n        guard let statusCodeValue = HTTPResponse?.statusCode else {\n            return nil\n        }\n        self.init(statusCodeValue)\n    }\n\n    /// This is declared as it's not automatically picked up by the complier for the above init\n    private init?(_ rawValue: Int) {\n        guard let value = HTTPStatusCode(rawValue: rawValue) else {\n            return nil\n        }\n        self = value\n    }\n}\n\npublic extension HTTPURLResponse {\n    \n    /**\n     * Marked internal to expose (as `statusCodeValue`) for Objective-C interoperability only.\n     *\n     * - returns: the receiver’s HTTP status code.\n     */\n    @objc(statusCodeValue) var statusCodeEnum: HTTPStatusCode {\n        return HTTPStatusCode(HTTPResponse: self)!\n    }\n    \n    /// - returns: the receiver’s HTTP status code.\n    var statusCodeValue: HTTPStatusCode? {\n        return HTTPStatusCode(HTTPResponse: self)\n    }\n    \n    /**\n     * Initializer for NSHTTPURLResponse objects.\n     *\n     * - parameter url: the URL from which the response was generated.\n     * - parameter statusCode: an HTTP status code.\n     * - parameter HTTPVersion: the version of the HTTP response as represented by the server.  This is typically represented as \"HTTP/1.1\".\n     * - parameter headerFields: a dictionary representing the header keys and values of the server response.\n     *\n     * - returns: the instance of the object, or `nil` if an error occurred during initialization.\n     */\n    @available(iOS, introduced: 7.0)\n    @objc(initWithURL:statusCodeValue:HTTPVersion:headerFields:)\n    convenience init?(url: URL, statusCode: HTTPStatusCode, httpVersion: String?, headerFields: [String : String]?) {\n        self.init(url: url, statusCode: statusCode.rawValue, httpVersion: httpVersion, headerFields: headerFields)\n    }\n}\n\n// MARK: - Deprecated cases\n\npublic extension HTTPStatusCode {\n    \n    /// - deprecated: Renamed to `payloadTooLarge`\n    @available(*, deprecated, renamed: \"payloadTooLarge\")\n    static let requestEntityTooLarge = payloadTooLarge\n    \n    /// - deprecated: Renamed to `uriTooLong`\n    @available(*, deprecated, renamed: \"uriTooLong\")\n    static let requestURITooLong = uriTooLong\n    \n    /// - deprecated: Renamed to `rangeNotSatisfiable`\n    @available(*, deprecated, renamed: \"rangeNotSatisfiable\")\n    static let requestedRangeNotSatisfiable = rangeNotSatisfiable\n    \n    /// - deprecated: Renamed to `iisLoginTimeout`\n    @available(*, deprecated, renamed: \"iisLoginTimeout\")\n    static let loginTimeout = iisLoginTimeout\n    \n    /// - deprecated: Renamed to `iisRetryWith`\n    @available(*, deprecated, renamed: \"iisRetryWith\")\n    static let retryWith = iisRetryWith\n    \n    /// - deprecated: Renamed to `nginxNoResponse`\n    @available(*, deprecated, renamed: \"nginxNoResponse\")\n    static let noResponse = nginxNoResponse\n    \n    /// - deprecated: Renamed to `nginxSSLCertificateError`\n    @available(*, deprecated, renamed: \"nginxSSLCertificateError\")\n    static let certError = nginxSSLCertificateError\n    \n    /// - deprecated: Renamed to `nginxSSLCertificateRequired`\n    @available(*, deprecated, renamed: \"nginxSSLCertificateRequired\")\n    static let noCert = nginxSSLCertificateRequired\n    \n    /// - deprecated: Renamed to `nginxHTTPToHTTPS`\n    @available(*, deprecated, renamed: \"nginxHTTPToHTTPS\")\n    static let httpToHTTPS = nginxHTTPToHTTPS\n    \n    /// - deprecated: Renamed to `nginxClientClosedRequest`\n    @available(*, deprecated, renamed: \"nginxClientClosedRequest\")\n    static let clientClosedRequest = nginxClientClosedRequest\n    \n    /// - deprecated: Renamed to `networkConnectTimeoutError`\n    @available(*, deprecated, renamed: \"networkConnectTimeoutError\")\n    static let networkTimeoutError = networkConnectTimeoutError\n    \n    /// Returned by version 1 of the Twitter Search and Trends API when the client is being rate limited; versions 1.1 and later use the 429 Too Many Requests (`tooManyRequests`) response code instead.\n    ///\n    /// - seealso: [Twitter Error Codes & Responses](https://dev.twitter.com/docs/error-codes-responses)\n    @available(*, deprecated, renamed: \"tooManyRequests\")\n    static let twitterEnhanceYourCalm = tooManyRequests\n}\n\npublic extension HTTPURLResponse {\n    \n    /// - deprecated: Renamed to `init(url:statusCode:httpVersion:headerFields)` to correct Swift 3 naming convention.\n    @available(*, deprecated, renamed: \"init(url:statusCode:httpVersion:headerFields:)\", message: \"Renamed to correct Swift 3 naming convention\")\n    @nonobjc\n    convenience init?(url: URL, statusCode: HTTPStatusCode, HTTPVersion: String?, headerFields: [String : String]?) {\n        self.init(url: url, statusCode: statusCode, httpVersion: HTTPVersion, headerFields: headerFields)\n    }\n}\n\n// MARK: - Remove cases\n\n/// Declared here for a cleaner API with no `!` types.\nprivate let __Unavailable: HTTPStatusCode! = nil\n\npublic extension HTTPStatusCode {\n    \n    /// Checkpoint: 103\n    ///\n    /// Used in the resumable requests proposal to resume aborted PUT or POST requests.\n    ///\n    /// - seealso: [Original proposal](https://web.archive.org/web/20151013212135/http://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal)\n    @available(*, unavailable, renamed: \"earlyHints\", message: \"Replaced by RFC standard code with different meaning\")\n    static let checkpoint = __Unavailable\n    \n    /// Switch Proxy: 306\n    ///\n    /// No longer used. Originally meant \"Subsequent requests should use the specified proxy.\"\n    ///\n    /// - seealso: [Original draft](https://tools.ietf.org/html/draft-cohen-http-305-306-responses-00)\n    @available(*, unavailable, message: \"No longer used\")\n    static let switchProxy = __Unavailable\n    \n    /// Authentication Timeout: 419\n    ///\n    /// Removed from Wikipedia page.\n    @available(*, unavailable, message: \"No longer available\")\n    static let authenticationTimeout = __Unavailable\n    \n    /// Method Failure: 419\n    ///\n    /// A deprecated response used by the Spring Framework when a method has failed.\n    ///\n    /// - seealso: [Spring Framework: HttpStatus enum documentation - `METHOD_FAILURE`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/HttpStatus.html#METHOD_FAILURE)\n    @available(*, unavailable, message: \"Deprecated\")\n    static let springFrameworkMethodFailure = __Unavailable\n    \n    /// Request Header Too Large: 494\n    ///\n    /// Removed and replaced with `RequestHeaderFieldsTooLarge` - 431\n    @available(*, unavailable, renamed: \"requestHeaderFieldsTooLarge\", message: \"Changed to a 431 status code\")\n    static let requestHeaderTooLarge = __Unavailable\n}\n"
  },
  {
    "path": "Sources/HTTPStatusCodes.swift",
    "content": "//\n// HTTPStatusCodes.swift\n//\n// Generated by Richard Hodgkins on 21/02/2019.\n// Copyright (c) 2019 Richard Hodgkins. All rights reserved.\n//\n\nimport Foundation\n\n/// HTTP status codes as per the [IANA HTTP status code registry](http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml).\n///\n/// Last updated: Fri, 21 Sep 2018 16:10:10 GMT\n///\n/// - seealso: [Wikipedia page - List of HTTP status codes](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)\n/// - seealso: [HTTP protocol standard - Status Code Definitions](https://tools.ietf.org/html/rfc2616#section-10)\n@objc public enum HTTPStatusCode: Int {\n    \n    /// Continue: 100\n    ///\n    /// - seealso: [RFC7231, Section 6.2.1](http://www.iana.org/go/rfc7231#section-6.2.1)\n    case `continue` = 100\n    \n    /// Switching Protocols: 101\n    ///\n    /// - seealso: [RFC7231, Section 6.2.2](http://www.iana.org/go/rfc7231#section-6.2.2)\n    case switchingProtocols = 101\n    \n    /// Processing: 102\n    ///\n    /// - seealso: [RFC2518](http://www.iana.org/go/rfc2518)\n    case processing = 102\n    \n    /// Early Hints: 103\n    ///\n    /// - seealso: [RFC8297](http://www.iana.org/go/rfc8297)\n    case earlyHints = 103\n    \n    /// OK: 200\n    ///\n    /// - seealso: [RFC7231, Section 6.3.1](http://www.iana.org/go/rfc7231#section-6.3.1)\n    @objc(HTTPStatusCodeOK)\n    case ok = 200\n    \n    /// Created: 201\n    ///\n    /// - seealso: [RFC7231, Section 6.3.2](http://www.iana.org/go/rfc7231#section-6.3.2)\n    case created = 201\n    \n    /// Accepted: 202\n    ///\n    /// - seealso: [RFC7231, Section 6.3.3](http://www.iana.org/go/rfc7231#section-6.3.3)\n    case accepted = 202\n    \n    /// Non-Authoritative Information: 203\n    ///\n    /// - seealso: [RFC7231, Section 6.3.4](http://www.iana.org/go/rfc7231#section-6.3.4)\n    case nonAuthoritativeInformation = 203\n    \n    /// No Content: 204\n    ///\n    /// - seealso: [RFC7231, Section 6.3.5](http://www.iana.org/go/rfc7231#section-6.3.5)\n    case noContent = 204\n    \n    /// Reset Content: 205\n    ///\n    /// - seealso: [RFC7231, Section 6.3.6](http://www.iana.org/go/rfc7231#section-6.3.6)\n    case resetContent = 205\n    \n    /// Partial Content: 206\n    ///\n    /// - seealso: [RFC7233, Section 4.1](http://www.iana.org/go/rfc7233#section-4.1)\n    case partialContent = 206\n    \n    /// Multi-Status: 207\n    ///\n    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)\n    case multiStatus = 207\n    \n    /// Already Reported: 208\n    ///\n    /// - seealso: [RFC5842](http://www.iana.org/go/rfc5842)\n    case alreadyReported = 208\n    \n    /// IM Used: 226\n    ///\n    /// - seealso: [RFC3229](http://www.iana.org/go/rfc3229)\n    @objc(HTTPStatusCodeIMUsed)\n    case imUsed = 226\n    \n    /// Multiple Choices: 300\n    ///\n    /// - seealso: [RFC7231, Section 6.4.1](http://www.iana.org/go/rfc7231#section-6.4.1)\n    case multipleChoices = 300\n    \n    /// Moved Permanently: 301\n    ///\n    /// - seealso: [RFC7231, Section 6.4.2](http://www.iana.org/go/rfc7231#section-6.4.2)\n    case movedPermanently = 301\n    \n    /// Found: 302\n    ///\n    /// - seealso: [RFC7231, Section 6.4.3](http://www.iana.org/go/rfc7231#section-6.4.3)\n    case found = 302\n    \n    /// See Other: 303\n    ///\n    /// - seealso: [RFC7231, Section 6.4.4](http://www.iana.org/go/rfc7231#section-6.4.4)\n    case seeOther = 303\n    \n    /// Not Modified: 304\n    ///\n    /// - seealso: [RFC7232, Section 4.1](http://www.iana.org/go/rfc7232#section-4.1)\n    case notModified = 304\n    \n    /// Use Proxy: 305\n    ///\n    /// - seealso: [RFC7231, Section 6.4.5](http://www.iana.org/go/rfc7231#section-6.4.5)\n    case useProxy = 305\n    \n    /// Temporary Redirect: 307\n    ///\n    /// - seealso: [RFC7231, Section 6.4.7](http://www.iana.org/go/rfc7231#section-6.4.7)\n    case temporaryRedirect = 307\n    \n    /// Permanent Redirect: 308\n    ///\n    /// - seealso: [RFC7538](http://www.iana.org/go/rfc7538)\n    case permanentRedirect = 308\n    \n    /// Bad Request: 400\n    ///\n    /// - seealso: [RFC7231, Section 6.5.1](http://www.iana.org/go/rfc7231#section-6.5.1)\n    case badRequest = 400\n    \n    /// Unauthorized: 401\n    ///\n    /// - seealso: [RFC7235, Section 3.1](http://www.iana.org/go/rfc7235#section-3.1)\n    case unauthorized = 401\n    \n    /// Payment Required: 402\n    ///\n    /// - seealso: [RFC7231, Section 6.5.2](http://www.iana.org/go/rfc7231#section-6.5.2)\n    case paymentRequired = 402\n    \n    /// Forbidden: 403\n    ///\n    /// - seealso: [RFC7231, Section 6.5.3](http://www.iana.org/go/rfc7231#section-6.5.3)\n    case forbidden = 403\n    \n    /// Not Found: 404\n    ///\n    /// - seealso: [RFC7231, Section 6.5.4](http://www.iana.org/go/rfc7231#section-6.5.4)\n    case notFound = 404\n    \n    /// Method Not Allowed: 405\n    ///\n    /// - seealso: [RFC7231, Section 6.5.5](http://www.iana.org/go/rfc7231#section-6.5.5)\n    case methodNotAllowed = 405\n    \n    /// Not Acceptable: 406\n    ///\n    /// - seealso: [RFC7231, Section 6.5.6](http://www.iana.org/go/rfc7231#section-6.5.6)\n    case notAcceptable = 406\n    \n    /// Proxy Authentication Required: 407\n    ///\n    /// - seealso: [RFC7235, Section 3.2](http://www.iana.org/go/rfc7235#section-3.2)\n    case proxyAuthenticationRequired = 407\n    \n    /// Request Timeout: 408\n    ///\n    /// - seealso: [RFC7231, Section 6.5.7](http://www.iana.org/go/rfc7231#section-6.5.7)\n    case requestTimeout = 408\n    \n    /// Conflict: 409\n    ///\n    /// - seealso: [RFC7231, Section 6.5.8](http://www.iana.org/go/rfc7231#section-6.5.8)\n    case conflict = 409\n    \n    /// Gone: 410\n    ///\n    /// - seealso: [RFC7231, Section 6.5.9](http://www.iana.org/go/rfc7231#section-6.5.9)\n    case gone = 410\n    \n    /// Length Required: 411\n    ///\n    /// - seealso: [RFC7231, Section 6.5.10](http://www.iana.org/go/rfc7231#section-6.5.10)\n    case lengthRequired = 411\n    \n    /// Precondition Failed: 412\n    ///\n    /// - seealso: [RFC7232, Section 4.2](http://www.iana.org/go/rfc7232#section-4.2)\n    /// - seealso: [RFC8144, Section 3.2](http://www.iana.org/go/rfc8144#section-3.2)\n    case preconditionFailed = 412\n    \n    /// Payload Too Large: 413\n    ///\n    /// - seealso: [RFC7231, Section 6.5.11](http://www.iana.org/go/rfc7231#section-6.5.11)\n    case payloadTooLarge = 413\n    \n    /// URI Too Long: 414\n    ///\n    /// - seealso: [RFC7231, Section 6.5.12](http://www.iana.org/go/rfc7231#section-6.5.12)\n    @objc(HTTPStatusCodeURITooLong)\n    case uriTooLong = 414\n    \n    /// Unsupported Media Type: 415\n    ///\n    /// - seealso: [RFC7231, Section 6.5.13](http://www.iana.org/go/rfc7231#section-6.5.13)\n    /// - seealso: [RFC7694, Section 3](http://www.iana.org/go/rfc7694#section-3)\n    case unsupportedMediaType = 415\n    \n    /// Range Not Satisfiable: 416\n    ///\n    /// - seealso: [RFC7233, Section 4.4](http://www.iana.org/go/rfc7233#section-4.4)\n    case rangeNotSatisfiable = 416\n    \n    /// Expectation Failed: 417\n    ///\n    /// - seealso: [RFC7231, Section 6.5.14](http://www.iana.org/go/rfc7231#section-6.5.14)\n    case expectationFailed = 417\n    \n    /// I'm A Teapot: 418\n    ///\n    /// Returned by tea pots requested to brew coffee\n    ///\n    /// - seealso: [RFC 2324](http://www.iana.org/go/rfc2324)\n    case imATeapot = 418\n    \n    /// Misdirected Request: 421\n    ///\n    /// - seealso: [RFC7540, Section 9.1.2](http://www.iana.org/go/rfc7540#section-9.1.2)\n    case misdirectedRequest = 421\n    \n    /// Unprocessable Entity: 422\n    ///\n    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)\n    case unprocessableEntity = 422\n    \n    /// Locked: 423\n    ///\n    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)\n    case locked = 423\n    \n    /// Failed Dependency: 424\n    ///\n    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)\n    case failedDependency = 424\n    \n    /// Too Early: 425\n    ///\n    /// - seealso: [RFC8470](http://www.iana.org/go/rfc8470)\n    case tooEarly = 425\n    \n    /// Upgrade Required: 426\n    ///\n    /// - seealso: [RFC7231, Section 6.5.15](http://www.iana.org/go/rfc7231#section-6.5.15)\n    case upgradeRequired = 426\n    \n    /// Precondition Required: 428\n    ///\n    /// - seealso: [RFC6585](http://www.iana.org/go/rfc6585)\n    case preconditionRequired = 428\n    \n    /// Too Many Requests: 429\n    ///\n    /// - seealso: [RFC6585](http://www.iana.org/go/rfc6585)\n    case tooManyRequests = 429\n    \n    /// Request Header Fields Too Large: 431\n    ///\n    /// - seealso: [RFC6585](http://www.iana.org/go/rfc6585)\n    case requestHeaderFieldsTooLarge = 431\n    \n    /// IIS Login Timeout: 440\n    ///\n    /// The client's session has expired and must log in again.\n    ///\n    /// **Category**: Internet Information Services\n    ///\n    /// - seealso: [Error message when you try to log on to Exchange 2007 by using Outlook Web Access: \"440 Login Timeout\"](http://support.microsoft.com/kb/941201/en-us)\n    @objc(HTTPStatusCodeIISLoginTimeout)\n    case iisLoginTimeout = 440\n    \n    /// nginx No Response: 444\n    ///\n    /// Used to indicate that the server has returned no information to the client and closed the connection.\n    ///\n    /// **Category**: nginx\n    case nginxNoResponse = 444\n    \n    /// IIS Retry With: 449\n    ///\n    /// The server cannot honour the request because the user has not provided the required information.\n    ///\n    /// **Category**: Internet Information Services\n    ///\n    /// - seealso: [2.2.6 449 Retry With Status Code](https://msdn.microsoft.com/en-us/library/dd891478.aspx)\n    @objc(HTTPStatusCodeIISRetryWith)\n    case iisRetryWith = 449\n    \n    /// Blocked by Windows Parental Controls: 450\n    ///\n    /// A Microsoft extension. This error is given when Windows Parental Controls are turned on and are blocking access to the given webpage.\n    case blockedByWindowsParentalControls = 450\n    \n    /// Unavailable For Legal Reasons: 451\n    ///\n    /// - seealso: [RFC7725](http://www.iana.org/go/rfc7725)\n    case unavailableForLegalReasons = 451\n    \n    /// nginx SSL Certificate Error: 495\n    ///\n    /// An expansion of the 400 Bad Request response code, used when the client has provided an invalid client certificate.\n    ///\n    /// **Category**: nginx\n    case nginxSSLCertificateError = 495\n    \n    /// nginx SSL Certificate Required: 496\n    ///\n    /// An expansion of the 400 Bad Request response code, used when a client certificate is required but not provided.\n    ///\n    /// **Category**: nginx\n    case nginxSSLCertificateRequired = 496\n    \n    /// nginx HTTP To HTTPS: 497\n    ///\n    /// An expansion of the 400 Bad Request response code, used when the client has made a HTTP request to a port listening for HTTPS requests.\n    ///\n    /// **Category**: nginx\n    case nginxHTTPToHTTPS = 497\n    \n    /// Token Expired: 498\n    ///\n    /// Returned by [ArcGIS for Server](https://en.wikipedia.org/wiki/ArcGIS_Server). A code of 498 indicates an expired or otherwise invalid token.\n    ///\n    /// - seealso: [Using token-based authentication](http://help.arcgis.com/en/arcgisserver/10.0/apis/soap/index.htm#Using_token_authentication.htm)\n    case tokenExpired = 498\n    \n    /// nginx Client Closed Request: 499\n    ///\n    /// Used when the client has closed the request before the server could send a response.\n    ///\n    /// **Category**: nginx\n    case nginxClientClosedRequest = 499\n    \n    /// Internal Server Error: 500\n    ///\n    /// - seealso: [RFC7231, Section 6.6.1](http://www.iana.org/go/rfc7231#section-6.6.1)\n    case internalServerError = 500\n    \n    /// Not Implemented: 501\n    ///\n    /// - seealso: [RFC7231, Section 6.6.2](http://www.iana.org/go/rfc7231#section-6.6.2)\n    case notImplemented = 501\n    \n    /// Bad Gateway: 502\n    ///\n    /// - seealso: [RFC7231, Section 6.6.3](http://www.iana.org/go/rfc7231#section-6.6.3)\n    case badGateway = 502\n    \n    /// Service Unavailable: 503\n    ///\n    /// - seealso: [RFC7231, Section 6.6.4](http://www.iana.org/go/rfc7231#section-6.6.4)\n    case serviceUnavailable = 503\n    \n    /// Gateway Timeout: 504\n    ///\n    /// - seealso: [RFC7231, Section 6.6.5](http://www.iana.org/go/rfc7231#section-6.6.5)\n    case gatewayTimeout = 504\n    \n    /// HTTP Version Not Supported: 505\n    ///\n    /// - seealso: [RFC7231, Section 6.6.6](http://www.iana.org/go/rfc7231#section-6.6.6)\n    @objc(HTTPStatusCodeHTTPVersionNotSupported)\n    case httpVersionNotSupported = 505\n    \n    /// Variant Also Negotiates: 506\n    ///\n    /// - seealso: [RFC2295](http://www.iana.org/go/rfc2295)\n    case variantAlsoNegotiates = 506\n    \n    /// Insufficient Storage: 507\n    ///\n    /// - seealso: [RFC4918](http://www.iana.org/go/rfc4918)\n    case insufficientStorage = 507\n    \n    /// Loop Detected: 508\n    ///\n    /// - seealso: [RFC5842](http://www.iana.org/go/rfc5842)\n    case loopDetected = 508\n    \n    /// Bandwidth Limit Exceeded: 509\n    /// \n    /// The server has exceeded the bandwidth specified by the server administrator; this is often used by shared hosting providers to limit the bandwidth of customers.\n    /// \n    /// - seealso: <https://documentation.cpanel.net/display/CKB/HTTP+Error+Codes+and+Quick+Fixes#HTTPErrorCodesandQuickFixes-509BandwidthLimitExceeded>\n    case bandwidthLimitExceeded = 509\n    \n    /// Not Extended: 510\n    /// \n    /// - seealso: [RFC2774](http://www.iana.org/go/rfc2774)\n    case notExtended = 510\n    \n    /// Network Authentication Required: 511\n    /// \n    /// - seealso: [RFC6585](http://www.iana.org/go/rfc6585)\n    case networkAuthenticationRequired = 511\n    \n    /// Site is frozen: 530\n    /// \n    /// Used by the [Pantheon](https://en.wikipedia.org/wiki/Pantheon_(software)) web platform to indicate a site that has been frozen due to inactivity.\n    case siteIsFrozen = 530\n    \n    /// Network Connect Timeout Error: 599\n    /// \n    /// This status code is not specified in any RFCs, but is used by some HTTP proxies to signal a network connect timeout behind the proxy to a client in front of the proxy.\n    case networkConnectTimeoutError = 599\n}\n\n"
  },
  {
    "path": "Tests/.gitignore",
    "content": "Carthage\nCartfile.resolved\n"
  },
  {
    "path": "Tests/Cartfile",
    "content": "github \"rhodgkins/SwiftHTTPStatusCodes\" \"master\"\n\n"
  },
  {
    "path": "Tests/Generator.playground/Contents.swift",
    "content": "import Foundation\nimport XCPlayground\n\nfunc createEnumCaseFromLine(line: String) -> Case? {\n    \n    func createCommentsFromReference(reference: String?) -> [String]? {\n        \n        func createRFCSeeAlso(link: String) -> String? {\n            let values = link.components(separatedBy: \", \")\n            guard let spec = values.first else {\n                return nil\n            }\n            let components = NSURLComponents(string: spec.lowercased())!\n            if values.count == 2 {\n                components.fragment = values[1].lowercased().replacingOccurrences(of: \" \", with: \"-\")\n            }\n            let url = components.url(relativeTo: URL(string: \"http://www.iana.org/go/\"))!\n            return createSeeAlso(text: link, link: url.absoluteString)\n        }\n        \n        guard let reference = reference else {\n            return nil\n        }\n        \n        let refsRegex = try! NSRegularExpression(pattern: \"\\\\[([^\\\\]]+)\\\\]\")\n        \n        return refsRegex.matches(in: reference, range: reference.nsRange).compactMap { result in\n            guard result.numberOfRanges == 2, let link = reference[result.range(at: 1)] else {\n                return nil\n            }\n            return createRFCSeeAlso(link: link)\n        }\n    }\n    \n    let linesRegex = try! NSRegularExpression(pattern: \"^([^,]*),([^,]*),\\\"?([^\\\"$]*)\\\"?\")\n    guard let match = linesRegex.firstMatch(in: line, range: line.nsRange), match.numberOfRanges == 4 else {\n        return nil\n    }\n    \n    let ref = line[match.range(at: 3)]\n    \n    guard let codeString = line[match.range(at: 1)], let code = Int(codeString, radix: 10) else {\n        return nil\n    }\n    guard let info = line[match.range(at: 2)], info.lowercased() != \"unassigned\" else {\n        return nil\n    }\n    \n    return Case(code: code, name: info, comments: createCommentsFromReference(reference: ref) ?? [])\n}\n\nfunc fetchCSV() -> (lastUpdated: String, cases: Set<Case>)? {\n    \n    let semaphore = DispatchSemaphore(value: 0)\n    var result: (String, Set<Case>)?\n    \n    let task = URLSession.shared.dataTask(with: URL(string: \"http://www.iana.org/assignments/http-status-codes/http-status-codes-1.csv\")!) { data, response, error in\n        defer { semaphore.signal() }\n\n        if let error = error {\n            print(\"Error fetching CSV: \\(error)\")\n            return\n        }\n        let response = response as! HTTPURLResponse\n        guard let lastUpdated = response.allHeaderFields[\"Last-Modified\"] as! String? else {\n            print(\"No Last-Modified header value\")\n            return\n        }\n        guard let d = data, let string = String(data: d, encoding: .utf8) else {\n            print(\"Unable to decode data: \\(String(describing: data))\")\n            return\n        }\n        \n        var cases = Set<Case>()\n        string.enumerateLines{ line, _ in\n            if let c = createEnumCaseFromLine(line: line) {\n                cases.insert(c)\n            }\n        }\n        result = (lastUpdated, cases)\n    }\n    task.resume()\n    if semaphore.wait(timeout: DispatchTime.now() + .seconds(10)) != .success {\n        task.cancel()\n        print(\"Timeout waiting for task to complete\")\n    }\n    return result\n}\n\nlet CodeBlacklist = [\n    306 // Declared as (Unused) in CSV\n]\n\nif let (lastUpdated, allCases) = fetchCSV() {\n    var cases = allCases.filter { !CodeBlacklist.contains($0.code) }\n    cases.formUnion(ExtraCases)\n    print(FileHeader)\n    print()\n    print(Imports)\n    print()\n    print(createEnumHeaderComment(lastUpdated: lastUpdated))\n    print(EnumDeclarationStart)\n    print()\n    print(cases.sorted().map(String.init(describing:)).joined(separator: \"\\n\\n\"))\n    print(EnumDeclarationEnd)\n    print()\n}\n"
  },
  {
    "path": "Tests/Generator.playground/Sources/Case.swift",
    "content": "public struct Case {\n    public let code: Int\n    let name: String\n    let comments: [String]\n    let caseName: String\n    let objCCaseName: String?\n    \n    init(code: Int, name: String, comments: String...) {\n        self.init(code: code, name: name, comments: comments)\n    }\n    \n    public init(code: Int, name: String, comments: [String]) {\n        self.code = code\n        self.name = name\n        self.comments = [\"\\(name): \\(code)\", \"\"] + comments\n        // Remove all non code print characters, interpret '-' as a space\n        let identifiers = (SpecialCaseNameLookup[code] ?? name).replacingOccurrences(of: \"\\\\-\", with: \" \", options: [.caseInsensitive, .regularExpression]).replacingOccurrences(of: \"[^a-z0-9 ]\", with: \"\", options: [.caseInsensitive, .regularExpression]).components(separatedBy: \" \")\n        \n        // Must always have at least 1 value for the identifiers\n        let prefix = identifiers.first!\n        // Match Swift 3.0 enum case naming convention\n        let swiftCaseNamePrefix = prefix.lowercased()\n        let swiftCaseNameSuffix = (identifiers.count > 1 ? identifiers.suffix(from: 1).map { $0.uppercasedFirstCharacter() } : []).joined(separator: \"\")\n        \n        let swiftCaseName = swiftCaseNamePrefix + swiftCaseNameSuffix\n        // Keep acronyms if its the first identifier\n        objCCaseName = prefix.uppercased() == prefix ? (prefix + swiftCaseNameSuffix) : nil\n        \n        // Escape special case names\n        caseName = UnsafeCaseNames.contains(swiftCaseName) ? \"`\\(swiftCaseName)`\" : swiftCaseName\n    }\n}\n\nextension Case: Hashable, Comparable, CustomStringConvertible {\n    public var hashValue: Int { return code.hashValue }\n    \n    public var description: String {\n        var lines = [makeLinesIntoDocComment(lines: comments, prefix: \"\\t\")]\n        if let objCCaseName = objCCaseName {\n            lines.append(\"\\t@objc(\\(EnumName)\\(objCCaseName))\")\n        }\n        lines.append(\"\\tcase \\(caseName) = \\(code)\")\n        return text(lines)\n    }\n    \n    public static func ==(lhs: Case, rhs: Case) -> Bool { return lhs.code == rhs.code }\n    public static func <(lhs: Case, rhs: Case) -> Bool { return lhs.code < rhs.code }\n}\n\nprivate extension String {\n    \n    func lowercasedFirstCharacter() -> String {\n        let firstCharacter = String(self[startIndex])\n        let rest = self[index(after: startIndex)...]\n        return firstCharacter.lowercased() + rest\n    }\n    \n    func uppercasedFirstCharacter() -> String {\n        let firstCharacter = String(self[startIndex])\n        let rest = self[index(after: startIndex)...]\n        return firstCharacter.uppercased() + rest\n    }\n}\n\nimport Foundation.NSRange\n\npublic extension String {\n    \n    var nsRange: NSRange {\n        return NSRange(startIndex..<endIndex, in: self)\n    }\n    \n    subscript(range: NSRange) -> String? {\n        guard let r = Range(range, in: self) else {\n            return nil\n        }\n        return String(self[r])\n    }\n}\n\n/// List of Swift keywords\nprivate let UnsafeCaseNames = Set(arrayLiteral:\n    \"continue\",\n    \"break\",\n    \"fallthrough­\",\n    \"return\",\n    \"guard\",\n    \"if\",\n    \"else\",\n    \"switch\",\n    \"default\",\n    \"for\",\n    \"while\",\n    \"repeat\",\n    \"do\",\n    \"try\",\n    \"catch\",\n    \"throw\",\n    \"defer\",\n    \"func\",\n    \"throws\",\n    \"rethrows\",\n    \"struct\",\n    \"class\",\n    \"extension\",\n    \"enum\",\n    \"protocol\",\n    \"typealias­\",\n    \"associatedtype­\",\n    \"public\",\n    \"internal\",\n    \"private\",\n    \"final\",\n    \"open\",\n    \"var\",\n    \"let\",\n    \"case\",\n    \"indirect\",\n    \"self\",\n    \"static\",\n    \"as\",\n    \"is\",\n    \"weak\",\n    \"unowned\",\n    \"in\",\n    \"where\",\n    \"get\",\n    \"set\",\n    \"willSet\",\n    \"didSet\",\n    \"init\",\n    \"deinit\",\n    \"subscript­\",\n    \"operator\",\n    \"postfix\",\n    \"prefix\",\n    \"infix\",\n    \"convenience­\",\n    \"dynamic­\",\n    \"­infix­\",\n    \"lazy­\",\n    \"mutating­\",\n    \"nonmutating­\",\n    \"optional­\",\n    \"override­\",\n    \"required\"\n)\n"
  },
  {
    "path": "Tests/Generator.playground/Sources/StaticTexts.swift",
    "content": "import Foundation\n\nfunc text(_ lines: [String]) -> String {\n    return lines.joined(separator: \"\\n\")\n}\n\nfunc text(_ lines: String...) -> String {\n    return text(lines)\n}\n\nfunc makeLinesIntoDocComment(lines: [String], prefix: String = \"\") -> String {\n    return text(lines.map { \"\\(prefix)/// \\($0)\" })\n}\n\nfunc makeLinesIntoDocComment(prefix: String = \"\", lines: String...) -> String {\n    return makeLinesIntoDocComment(lines: lines, prefix: prefix)\n}\n\nprivate func makeLinesIntoComment(lines: String...) -> String {\n    return text(lines.map { \"// \\($0)\" })\n}\n\nfunc createLink(text: String? = nil, link: String) -> String {\n    guard let text = text else {\n        return \"<\\(link)>\"\n    }\n    return \"[\\(text)](\\(link))\"\n}\n\npublic func createSeeAlso(text: String? = nil, link: String) -> String {\n    return \"- seealso: \\(createLink(text: text, link: link))\"\n}\n\nprivate let Date: String = {\n    let formatter = DateFormatter()\n    formatter.dateFormat = \"dd/MM/yyyy\"\n    return formatter.string(from: Foundation.Date())\n}()\nprivate let Year: String = {\n    let formatter = DateFormatter()\n    formatter.dateFormat = \"yyyy\"\n    return formatter.string(from: Foundation.Date())\n}()\n\nlet EnumName = \"HTTPStatusCode\"\n\npublic let FileHeader = makeLinesIntoComment(lines:\n    \"\",\n    \"HTTPStatusCodes.swift\",\n    \"\",\n    \"Generated by Richard Hodgkins on \\(Date).\",\n    \"Copyright (c) \\(Year) Richard Hodgkins. All rights reserved.\",\n    \"\"\n)\n\npublic let Imports = text(\n    \"import Foundation\"\n)\n\npublic func createEnumHeaderComment(lastUpdated: String) -> String {\n    return makeLinesIntoDocComment(lines:\n        \"HTTP status codes as per the \\(createLink(text: \"IANA HTTP status code registry\", link: \"http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml\")).\",\n        \"\",\n        \"Last updated: \\(lastUpdated)\",\n        \"\",\n        \"- seealso: \\(createLink(text: \"Wikipedia page - List of HTTP status codes\", link: \"http://en.wikipedia.org/wiki/List_of_HTTP_status_codes\"))\",\n        \"- seealso: \\(createLink(text: \"HTTP protocol standard - Status Code Definitions\", link: \"https://tools.ietf.org/html/rfc2616#section-10\"))\"\n    )\n}\n\npublic let EnumDeclarationStart = \"@objc public enum \\(EnumName): Int {\"\n\npublic let EnumDeclarationEnd = \"}\"\n\n/// Allows conversions of special cases defined in the RFC spec.\nlet SpecialCaseNameLookup: [Int: String] = [\n    :\n]\n\npublic let ExtraCases = [\n    \n    // MARK: RFC\n    \n    Case(code: 418,\n         name: \"I'm A Teapot\",\n     comments:\n        \"Returned by tea pots requested to brew coffee\",\n        \"\",\n        createSeeAlso(text: \"RFC 2324\", link: \"http://www.iana.org/go/rfc2324\")\n    ),\n    \n    // MARK: ISS\n    \n    Case(code: 440,\n         name: \"IIS Login Timeout\",\n     comments:\n        \"The client's session has expired and must log in again.\",\n        \"\",\n        \"**Category**: Internet Information Services\",\n        \"\",\n        createSeeAlso(text: \"Error message when you try to log on to Exchange 2007 by using Outlook Web Access: \\\"440 Login Timeout\\\"\", link: \"http://support.microsoft.com/kb/941201/en-us\")\n    ),\n    Case(code: 449,\n        name: \"IIS Retry With\",\n        comments:\n        \"The server cannot honour the request because the user has not provided the required information.\",\n        \"\",\n        \"**Category**: Internet Information Services\",\n        \"\",\n        createSeeAlso(text: \"2.2.6 449 Retry With Status Code\", link: \"https://msdn.microsoft.com/en-us/library/dd891478.aspx\")\n    ),\n    \n    // MARK: ngnix\n    \n    Case(code: 444,\n         name: \"nginx No Response\",\n     comments:\n        \"Used to indicate that the server has returned no information to the client and closed the connection.\",\n        \"\",\n        \"**Category**: nginx\"\n    ),\n    Case(code: 495,\n         name: \"nginx SSL Certificate Error\",\n     comments:\n        \"An expansion of the 400 Bad Request response code, used when the client has provided an invalid client certificate.\",\n        \"\",\n        \"**Category**: nginx\"\n    ),\n    Case(code: 496,\n         name: \"nginx SSL Certificate Required\",\n     comments:\n        \"An expansion of the 400 Bad Request response code, used when a client certificate is required but not provided.\",\n        \"\",\n        \"**Category**: nginx\"\n    ),\n    Case(code: 497,\n         name: \"nginx HTTP To HTTPS\",\n     comments:\n        \"An expansion of the 400 Bad Request response code, used when the client has made a HTTP request to a port listening for HTTPS requests.\",\n        \"\",\n        \"**Category**: nginx\"\n    ),\n    Case(code: 499,\n         name: \"nginx Client Closed Request\",\n     comments:\n        \"Used when the client has closed the request before the server could send a response.\",\n        \"\",\n        \"**Category**: nginx\"\n    ),\n    \n    // MARK: Other\n    \n    Case(code: 450,\n         name: \"Blocked by Windows Parental Controls\",\n     comments:\n        \"A Microsoft extension. This error is given when Windows Parental Controls are turned on and are blocking access to the given webpage.\"\n    ),\n    Case(code: 498,\n         name: \"Token Expired\",\n     comments:\n        \"Returned by \\(createLink(text: \"ArcGIS for Server\", link: \"https://en.wikipedia.org/wiki/ArcGIS_Server\")). A code of 498 indicates an expired or otherwise invalid token.\",\n        \"\",\n        createSeeAlso(text: \"Using token-based authentication\", link: \"http://help.arcgis.com/en/arcgisserver/10.0/apis/soap/index.htm#Using_token_authentication.htm\")\n    ),\n    Case(code: 530,\n         name: \"Site is frozen\",\n     comments:\n        \"Used by the \\(createLink(text: \"Pantheon\", link: \"https://en.wikipedia.org/wiki/Pantheon_(software)\")) web platform to indicate a site that has been frozen due to inactivity.\"\n    ),\n    Case(code: 509,\n         name: \"Bandwidth Limit Exceeded\",\n     comments:\n        \"The server has exceeded the bandwidth specified by the server administrator; this is often used by shared hosting providers to limit the bandwidth of customers.\",\n        \"\",\n        createSeeAlso(link: \"https://documentation.cpanel.net/display/CKB/HTTP+Error+Codes+and+Quick+Fixes#HTTPErrorCodesandQuickFixes-509BandwidthLimitExceeded\")\n    ),\n    Case(code: 599,\n         name: \"Network Connect Timeout Error\",\n     comments: \"This status code is not specified in any RFCs, but is used by some HTTP proxies to signal a network connect timeout behind the proxy to a client in front of the proxy.\"\n    )\n]\n"
  },
  {
    "path": "Tests/Generator.playground/contents.xcplayground",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='5.0' target-platform='osx' executeOnSourceChanges='false' last-migration='0800'>\n    <timeline fileName='timeline.xctimeline'/>\n</playground>"
  },
  {
    "path": "Tests/HTTPStatusCodes/Deprecated.h",
    "content": "//\n//  Deprecated.h\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 08/06/2016.\n//  Copyright © 2016 Rich H. All rights reserved.\n//\n\n@import Foundation;\n\n/// Used to clean up API, should not be used externally.\ntypedef const NSInteger __HTTPStatusCode NS_SWIFT_UNAVAILABLE(\"\");\n\n// MARK: - Deprecated\n\n/// - deprecated: Renamed to `HTTPStatusCodePayloadTooLarge`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRequestEntityTooLarge NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.requestEntityTooLarge instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodePayloadTooLarge\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeURITooLong`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRequestURITooLong NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.requestURITooLong instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeURITooLong\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeRangeNotSatisfiable`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRequestedRangeNotSatisfiable NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.requestedRangeNotSatisfiable instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeRangeNotSatisfiable\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeIISLoginTimeout`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeLoginTimeout NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.loginTimeout instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeIISLoginTimeout\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeIISRetryWith`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRetryWith NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.retryWith instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeIISRetryWith\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeNginxNoResponse`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeNoResponse NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.noResponse instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeNginxNoResponse\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeNginxSSLCertificateError`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeCertError NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.certError instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeNginxSSLCertificateError\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeNginxSSLCertificateRequired`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeNoCert NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.noCert instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeNginxSSLCertificateRequired\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeNginxHTTPToHTTPS`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeHTTPToHTTPS NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.hTTPToHTTPS instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeNginxHTTPToHTTPS\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeNginxClientClosedRequest`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeClientClosedRequest NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.clientClosedRequest instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeNginxClientClosedRequest\");\n\n/// - deprecated: Renamed to `HTTPStatusCodeNetworkConnectTimeoutError`\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeNetworkTimeoutError NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.networkTimeoutError instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeNetworkConnectTimeoutError\");;\n\n/// Returned by version 1 of the Twitter Search and Trends API when the client is being rate limited; versions 1.1 and later use the 429 Too Many Requests response code instead.\n///\n/// - seealso: [Twitter Error Codes & Responses](https://dev.twitter.com/docs/error-codes-responses)\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeTwitterEnhanceYourCalm NS_SWIFT_UNAVAILABLE(\"Use HTTPStatusCode.TwitterEnhanceYourCalm instead\") DEPRECATED_MSG_ATTRIBUTE(\"Renamed to HTTPStatusCodeTooManyRequests\");\n\n\n// MARK: - Removed\n\n/// Checkpoint: 103\n///\n/// Used in the resumable requests proposal to resume aborted PUT or POST requests.\n///\n/// Removed and replaced with `EarlyHints` which has a different meaning.\n///\n/// - seealso: [Original proposal](https://web.archive.org/web/20151013212135/http://code.google.com/p/gears/wiki/ResumableHttpRequestsProposal)\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeCheckpoint NS_UNAVAILABLE;\n\n/// Switch Proxy: 306\n///\n/// No longer used. Originally meant \"Subsequent requests should use the specified proxy.\"\n///\n/// - seealso: [Original draft](https://tools.ietf.org/html/draft-cohen-http-305-306-responses-00)\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeSwitchProxy NS_UNAVAILABLE;\n\n/// Authentication Timeout: 419\n///\n/// Removed from Wikipedia page.\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeAuthenticationTimeout NS_UNAVAILABLE;\n\n/// Method Failure: 419\n///\n/// A deprecated response used by the Spring Framework when a method has failed.\n///\n/// - seealso: [Spring Framework: HttpStatus enum documentation - `METHOD_FAILURE`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/HttpStatus.html#METHOD_FAILURE)\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeSpringFrameworkMethodFailure NS_UNAVAILABLE;\n\n/// Request Header Too Large: 494\n///\n/// Removed and replaced with `RequestHeaderFieldsTooLarge` - 431\nFOUNDATION_EXTERN __HTTPStatusCode HTTPStatusCodeRequestHeaderTooLarge NS_UNAVAILABLE;\n"
  },
  {
    "path": "Tests/HTTPStatusCodes/Deprecated.m",
    "content": "//\n//  Deprecated.c\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 08/06/2016.\n//  Copyright © 2016 Rich H. All rights reserved.\n//\n\n#import \"Deprecated.h\"\n\n#import <HTTPStatusCodes/HTTPStatusCodes-Swift.h>\n\n// MARK: - Deprecated\n\n__HTTPStatusCode HTTPStatusCodeRequestEntityTooLarge = HTTPStatusCodePayloadTooLarge;\n__HTTPStatusCode HTTPStatusCodeRequestURITooLong = HTTPStatusCodeURITooLong;\n__HTTPStatusCode HTTPStatusCodeRequestedRangeNotSatisfiable = HTTPStatusCodeRangeNotSatisfiable;\n__HTTPStatusCode HTTPStatusCodeLoginTimeout = HTTPStatusCodeIISLoginTimeout;\n__HTTPStatusCode HTTPStatusCodeRetryWith = HTTPStatusCodeIISRetryWith;\n__HTTPStatusCode HTTPStatusCodeNoResponse = HTTPStatusCodeNginxNoResponse;\n__HTTPStatusCode HTTPStatusCodeCertError = HTTPStatusCodeNginxSSLCertificateError;\n__HTTPStatusCode HTTPStatusCodeNoCert = HTTPStatusCodeNginxSSLCertificateRequired;\n__HTTPStatusCode HTTPStatusCodeHTTPToHTTPS = HTTPStatusCodeNginxHTTPToHTTPS;\n__HTTPStatusCode HTTPStatusCodeClientClosedRequest = HTTPStatusCodeNginxClientClosedRequest;\n__HTTPStatusCode HTTPStatusCodeNetworkTimeoutError = HTTPStatusCodeNetworkConnectTimeoutError;\n__HTTPStatusCode HTTPStatusCodeTwitterEnhanceYourCalm = HTTPStatusCodeTooManyRequests;\n\n// MARK: - Removed\n\n__HTTPStatusCode HTTPStatusCodeCheckpoint = 103;\n__HTTPStatusCode HTTPStatusCodeSwitchProxy = 306;\n__HTTPStatusCode HTTPStatusCodeAuthenticationTimeout = 419;\n__HTTPStatusCode HTTPStatusCodeSpringFrameworkMethodFailure = 419;\n__HTTPStatusCode HTTPStatusCodeRequestHeaderTooLarge = 494;\n"
  },
  {
    "path": "Tests/HTTPStatusCodes/HTTPStatusCodes.h",
    "content": "//\n//  HTTPStatusCodes.h\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 22/02/2015.\n//  Copyright (c) 2015 Rich H. All rights reserved.\n//\n\n@import Foundation;\n\n//! Project version number for HTTPStatusCodes.\nFOUNDATION_EXPORT double HTTPStatusCodesVersionNumber;\n\n//! Project version string for HTTPStatusCodes.\nFOUNDATION_EXPORT const unsigned char HTTPStatusCodesVersionString[];\n\n#import <HTTPStatusCodes/Deprecated.h>\n"
  },
  {
    "path": "Tests/HTTPStatusCodes/SupportingFiles/Info-OSX.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(HSC_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2015 Rich H. All rights reserved.</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/HTTPStatusCodes/SupportingFiles/Info-iOS.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(HSC_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/HTTPStatusCodes/SupportingFiles/Info-tvOS.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(HSC_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/HTTPStatusCodes/SupportingFiles/Info-watchOS.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(HSC_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcconfig",
    "content": "//\n//  HTTPStatusCodes.xcconfig\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 14/09/2015.\n//  Copyright © 2015 Rich H. All rights reserved.\n//\n\n// Custom\n\nPRODUCT_NAME                            = HTTPStatusCodes\nPRODUCT_BUNDLE_IDENTIFIER               = uk.co.rhodgkins.swift.$(PRODUCT_NAME:rfc1034identifier)\nHSC_VERSION                             = 3.3.2\n\n// Universal Framework\nAPPLICATION_EXTENSION_API_ONLY          = YES\nCOMBINE_HIDPI_IMAGES                    = YES\n\nSUPPORTED_PLATFORMS                     = macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator\n\nVALID_ARCHS[sdk=iphone*]                = arm64 armv7 armv7s\nVALID_ARCHS[sdk=appletv*]               = arm64\nVALID_ARCHS[sdk=macosx*]                = i386 x86_64\nVALID_ARCHS[sdk=watch*]                 = armv7k\n\nSWIFT_VERSION = 5.0\n\nLD_RUNPATH_SEARCH_PATHS[sdk=iphone*]    = $(inherited) @executable_path/Frameworks @loader_path/Frameworks\nLD_RUNPATH_SEARCH_PATHS[sdk=appletv*]   = $(inherited) @executable_path/Frameworks @loader_path/Frameworks\nLD_RUNPATH_SEARCH_PATHS[sdk=macosx*]    = $(inherited) @executable_path/../Frameworks @loader_path/Frameworks\nLD_RUNPATH_SEARCH_PATHS[sdk=watch*]     = $(inherited) @executable_path/Frameworks\n\nINFOPLIST_FILE[sdk=iphone*]             = $(PROJECT_NAME)/SupportingFiles/Info-iOS.plist\nINFOPLIST_FILE[sdk=appletv*]            = $(PROJECT_NAME)/SupportingFiles/Info-tvOS.plist\nINFOPLIST_FILE[sdk=macosx*]             = $(PROJECT_NAME)/SupportingFiles/Info-OSX.plist\nINFOPLIST_FILE[sdk=watch*]              = $(PROJECT_NAME)/SupportingFiles/Info-watchOS.plist\n\n// Platform-specific\n\n// iOS\nCODE_SIGN_IDENTITY[sdk=iphoneos*]       = iPhone Developer\nIPHONEOS_DEPLOYMENT_TARGET[sdk=iphone*] = 8.0\nTARGETED_DEVICE_FAMILY[sdk=iphone*]     = 1,2\n\n// tvOS\nCODE_SIGN_IDENTITY[sdk=appletvos*]      = iPhone Developer\nTVOS_DEPLOYMENT_TARGET[sdk=appletv*]    = 9.0\nTARGETED_DEVICE_FAMILY[sdk=appletv*]    = 3\n\n// OS X\nMACOSX_DEPLOYMENT_TARGET[sdk=macosx*]   = 10.10\nFRAMEWORK_VERSION[sdk=macosx*]          = A\n\n// WatchOS\nCODE_SIGN_IDENTITY[sdk=watchos*]        = iPhone Developer\nWATCHOS_DEPLOYMENT_TARGET[sdk=watch*]   = 2.0\n"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 48;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t440D14181A99DD1D00EEB60B /* HTTPStatusCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 440D14171A99DD1D00EEB60B /* HTTPStatusCodes.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t440D141E1A99DD1D00EEB60B /* HTTPStatusCodes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 440D14121A99DD1D00EEB60B /* HTTPStatusCodes.framework */; };\n\t\t440D14251A99DD1D00EEB60B /* HTTPStatusCodesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440D14241A99DD1D00EEB60B /* HTTPStatusCodesTests.swift */; };\n\t\t4410E6E11D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4410E6E01D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift */; };\n\t\t442266871D076CA10083A675 /* RegressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 442266861D076CA10083A675 /* RegressionTests.swift */; };\n\t\t4423AB191DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4423AB181DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m */; };\n\t\t442DC0301DAEC41600420E08 /* ObjectiveCTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 442DC02F1DAEC41600420E08 /* ObjectiveCTests.m */; };\n\t\t444320471D08CA1D00A6CA18 /* Deprecated.h in Headers */ = {isa = PBXBuildFile; fileRef = 444320461D08C9AC00A6CA18 /* Deprecated.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t444320491D08CAED00A6CA18 /* Deprecated.m in Sources */ = {isa = PBXBuildFile; fileRef = 444320481D08CAED00A6CA18 /* Deprecated.m */; };\n\t\t44D94E4D1D07387400DC7B50 /* HTTPStatusCodes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44D94E4C1D07387400DC7B50 /* HTTPStatusCodes.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t440D141F1A99DD1D00EEB60B /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 440D14091A99DD1D00EEB60B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 440D14111A99DD1D00EEB60B;\n\t\t\tremoteInfo = HTTPStatusCodes;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t440D14121A99DD1D00EEB60B /* HTTPStatusCodes.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HTTPStatusCodes.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t440D14171A99DD1D00EEB60B /* HTTPStatusCodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTTPStatusCodes.h; sourceTree = \"<group>\"; };\n\t\t440D141D1A99DD1D00EEB60B /* HTTPStatusCodesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HTTPStatusCodesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t440D14231A99DD1D00EEB60B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t440D14241A99DD1D00EEB60B /* HTTPStatusCodesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPStatusCodesTests.swift; sourceTree = \"<group>\"; };\n\t\t440D14331A99DDC900EEB60B /* HTTPStatusCodes.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; name = HTTPStatusCodes.podspec; path = ../HTTPStatusCodes.podspec; sourceTree = \"<group>\"; };\n\t\t440D14341A99DDC900EEB60B /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = \"<group>\"; };\n\t\t440D14351A99DDC900EEB60B /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = \"<group>\"; };\n\t\t440D14361A99E01500EEB60B /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text; name = .travis.yml; path = ../.travis.yml; sourceTree = \"<group>\"; };\n\t\t4410E6E01D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"HTTPStatusCodes+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\t4410E6E21D074E7500AC18E6 /* Generator.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Generator.playground; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\t442266861D076CA10083A675 /* RegressionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegressionTests.swift; sourceTree = \"<group>\"; };\n\t\t4423AB181DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjectiveCRegressionTests.m; sourceTree = \"<group>\"; };\n\t\t442DC02F1DAEC41600420E08 /* ObjectiveCTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjectiveCTests.m; sourceTree = \"<group>\"; };\n\t\t444320461D08C9AC00A6CA18 /* Deprecated.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Deprecated.h; sourceTree = \"<group>\"; };\n\t\t444320481D08CAED00A6CA18 /* Deprecated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Deprecated.m; sourceTree = \"<group>\"; };\n\t\t446C8CDC1BA73F0B00FFB0E3 /* HTTPStatusCodes.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = HTTPStatusCodes.xcconfig; sourceTree = \"<group>\"; };\n\t\t449852021B5A39140081F132 /* Info-iOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"Info-iOS.plist\"; sourceTree = \"<group>\"; };\n\t\t449852031B5A39140081F132 /* Info-OSX.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"Info-OSX.plist\"; sourceTree = \"<group>\"; };\n\t\t449852041B5A39140081F132 /* Info-watchOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"Info-watchOS.plist\"; sourceTree = \"<group>\"; };\n\t\t44D94E4C1D07387400DC7B50 /* HTTPStatusCodes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPStatusCodes.swift; sourceTree = \"<group>\"; };\n\t\t44D94E4E1D0738D600DC7B50 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Package.swift; path = ../Package.swift; sourceTree = \"<group>\"; };\n\t\t44F92B2E1C7E3C7C00A0AD0A /* Info-tvOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"Info-tvOS.plist\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t440D140E1A99DD1D00EEB60B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t440D141A1A99DD1D00EEB60B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t440D141E1A99DD1D00EEB60B /* HTTPStatusCodes.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t440D14081A99DD1D00EEB60B = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t440D14351A99DDC900EEB60B /* README.md */,\n\t\t\t\t440D14331A99DDC900EEB60B /* HTTPStatusCodes.podspec */,\n\t\t\t\t440D14361A99E01500EEB60B /* .travis.yml */,\n\t\t\t\t440D14341A99DDC900EEB60B /* LICENSE */,\n\t\t\t\t446C8CDC1BA73F0B00FFB0E3 /* HTTPStatusCodes.xcconfig */,\n\t\t\t\t44D94E4E1D0738D600DC7B50 /* Package.swift */,\n\t\t\t\t4410E6E21D074E7500AC18E6 /* Generator.playground */,\n\t\t\t\t440D14141A99DD1D00EEB60B /* HTTPStatusCodes */,\n\t\t\t\t440D14211A99DD1D00EEB60B /* HTTPStatusCodesTests */,\n\t\t\t\t440D14131A99DD1D00EEB60B /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t440D14131A99DD1D00EEB60B /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t440D14121A99DD1D00EEB60B /* HTTPStatusCodes.framework */,\n\t\t\t\t440D141D1A99DD1D00EEB60B /* HTTPStatusCodesTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t440D14141A99DD1D00EEB60B /* HTTPStatusCodes */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t440D14171A99DD1D00EEB60B /* HTTPStatusCodes.h */,\n\t\t\t\t444320461D08C9AC00A6CA18 /* Deprecated.h */,\n\t\t\t\t444320481D08CAED00A6CA18 /* Deprecated.m */,\n\t\t\t\t44D94E4B1D07387400DC7B50 /* Sources */,\n\t\t\t\t449852011B5A39140081F132 /* SupportingFiles */,\n\t\t\t);\n\t\t\tpath = HTTPStatusCodes;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t440D14211A99DD1D00EEB60B /* HTTPStatusCodesTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t440D14231A99DD1D00EEB60B /* Info.plist */,\n\t\t\t\t440D14241A99DD1D00EEB60B /* HTTPStatusCodesTests.swift */,\n\t\t\t\t442DC02F1DAEC41600420E08 /* ObjectiveCTests.m */,\n\t\t\t\t442266861D076CA10083A675 /* RegressionTests.swift */,\n\t\t\t\t4423AB181DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m */,\n\t\t\t);\n\t\t\tpath = HTTPStatusCodesTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t449852011B5A39140081F132 /* SupportingFiles */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t449852021B5A39140081F132 /* Info-iOS.plist */,\n\t\t\t\t44F92B2E1C7E3C7C00A0AD0A /* Info-tvOS.plist */,\n\t\t\t\t449852031B5A39140081F132 /* Info-OSX.plist */,\n\t\t\t\t449852041B5A39140081F132 /* Info-watchOS.plist */,\n\t\t\t);\n\t\t\tpath = SupportingFiles;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t44D94E4B1D07387400DC7B50 /* Sources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t44D94E4C1D07387400DC7B50 /* HTTPStatusCodes.swift */,\n\t\t\t\t4410E6E01D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift */,\n\t\t\t);\n\t\t\tname = Sources;\n\t\t\tpath = ../../Sources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t440D140F1A99DD1D00EEB60B /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t440D14181A99DD1D00EEB60B /* HTTPStatusCodes.h in Headers */,\n\t\t\t\t444320471D08CA1D00A6CA18 /* Deprecated.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t440D14111A99DD1D00EEB60B /* HTTPStatusCodes */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 440D14281A99DD1D00EEB60B /* Build configuration list for PBXNativeTarget \"HTTPStatusCodes\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t440D140D1A99DD1D00EEB60B /* Sources */,\n\t\t\t\t440D140E1A99DD1D00EEB60B /* Frameworks */,\n\t\t\t\t440D140F1A99DD1D00EEB60B /* Headers */,\n\t\t\t\t440D14101A99DD1D00EEB60B /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = HTTPStatusCodes;\n\t\t\tproductName = HTTPStatusCodes;\n\t\t\tproductReference = 440D14121A99DD1D00EEB60B /* HTTPStatusCodes.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t440D141C1A99DD1D00EEB60B /* HTTPStatusCodesTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 440D142B1A99DD1D00EEB60B /* Build configuration list for PBXNativeTarget \"HTTPStatusCodesTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t440D14191A99DD1D00EEB60B /* Sources */,\n\t\t\t\t440D141A1A99DD1D00EEB60B /* Frameworks */,\n\t\t\t\t440D141B1A99DD1D00EEB60B /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t440D14201A99DD1D00EEB60B /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = HTTPStatusCodesTests;\n\t\t\tproductName = HTTPStatusCodesTests;\n\t\t\tproductReference = 440D141D1A99DD1D00EEB60B /* HTTPStatusCodesTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t440D14091A99DD1D00EEB60B /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftMigration = 0700;\n\t\t\t\tLastSwiftUpdateCheck = 0730;\n\t\t\t\tLastUpgradeCheck = 1020;\n\t\t\t\tORGANIZATIONNAME = \"Rich H\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t440D14111A99DD1D00EEB60B = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.3;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t};\n\t\t\t\t\t440D141C1A99DD1D00EEB60B = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.3;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 440D140C1A99DD1D00EEB60B /* Build configuration list for PBXProject \"HTTPStatusCodes\" */;\n\t\t\tcompatibilityVersion = \"Xcode 8.0\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\tEnglish,\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = 440D14081A99DD1D00EEB60B;\n\t\t\tproductRefGroup = 440D14131A99DD1D00EEB60B /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t440D14111A99DD1D00EEB60B /* HTTPStatusCodes */,\n\t\t\t\t440D141C1A99DD1D00EEB60B /* HTTPStatusCodesTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t440D14101A99DD1D00EEB60B /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t440D141B1A99DD1D00EEB60B /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t440D140D1A99DD1D00EEB60B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t4410E6E11D0740DA00AC18E6 /* HTTPStatusCodes+Extensions.swift in Sources */,\n\t\t\t\t44D94E4D1D07387400DC7B50 /* HTTPStatusCodes.swift in Sources */,\n\t\t\t\t444320491D08CAED00A6CA18 /* Deprecated.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t440D14191A99DD1D00EEB60B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t440D14251A99DD1D00EEB60B /* HTTPStatusCodesTests.swift in Sources */,\n\t\t\t\t442DC0301DAEC41600420E08 /* ObjectiveCTests.m in Sources */,\n\t\t\t\t442266871D076CA10083A675 /* RegressionTests.swift in Sources */,\n\t\t\t\t4423AB191DAEAF5700C36EA3 /* ObjectiveCRegressionTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t440D14201A99DD1D00EEB60B /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 440D14111A99DD1D00EEB60B /* HTTPStatusCodes */;\n\t\t\ttargetProxy = 440D141F1A99DD1D00EEB60B /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\t440D14261A99DD1D00EEB60B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 446C8CDC1BA73F0B00FFB0E3 /* HTTPStatusCodes.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t440D14271A99DD1D00EEB60B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 446C8CDC1BA73F0B00FFB0E3 /* HTTPStatusCodes.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t440D14291A99DD1D00EEB60B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t440D142A1A99DD1D00EEB60B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_CODE_COVERAGE = NO;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t440D142C1A99DD1D00EEB60B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = NO;\n\t\t\t\tCLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(PRODUCT_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\t\"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]\" = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\t\"LD_RUNPATH_SEARCH_PATHS[sdk=watch*]\" = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-DDEBUG\";\n\t\t\t\tPRODUCT_NAME = HTTPStatusCodesTests;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t440D142D1A99DD1D00EEB60B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = NO;\n\t\t\t\tCLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;\n\t\t\t\tINFOPLIST_FILE = \"$(PRODUCT_NAME)/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\t\"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]\" = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\t\"LD_RUNPATH_SEARCH_PATHS[sdk=watch*]\" = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_NAME = HTTPStatusCodesTests;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t440D140C1A99DD1D00EEB60B /* Build configuration list for PBXProject \"HTTPStatusCodes\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t440D14261A99DD1D00EEB60B /* Debug */,\n\t\t\t\t440D14271A99DD1D00EEB60B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t440D14281A99DD1D00EEB60B /* Build configuration list for PBXNativeTarget \"HTTPStatusCodes\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t440D14291A99DD1D00EEB60B /* Debug */,\n\t\t\t\t440D142A1A99DD1D00EEB60B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t440D142B1A99DD1D00EEB60B /* Build configuration list for PBXNativeTarget \"HTTPStatusCodesTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t440D142C1A99DD1D00EEB60B /* Debug */,\n\t\t\t\t440D142D1A99DD1D00EEB60B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 440D14091A99DD1D00EEB60B /* Project object */;\n}\n"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:HTTPStatusCodes.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/HTTPStatusCodes.xcodeproj/xcshareddata/xcschemes/HTTPStatusCodes.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"440D14111A99DD1D00EEB60B\"\n               BuildableName = \"HTTPStatusCodes.framework\"\n               BlueprintName = \"HTTPStatusCodes\"\n               ReferencedContainer = \"container:HTTPStatusCodes.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"NO\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"NO\"\n            buildForAnalyzing = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"440D141C1A99DD1D00EEB60B\"\n               BuildableName = \"HTTPStatusCodesTests.xctest\"\n               BlueprintName = \"HTTPStatusCodesTests\"\n               ReferencedContainer = \"container:HTTPStatusCodes.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      codeCoverageEnabled = \"YES\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"440D141C1A99DD1D00EEB60B\"\n               BuildableName = \"HTTPStatusCodesTests.xctest\"\n               BlueprintName = \"HTTPStatusCodesTests\"\n               ReferencedContainer = \"container:HTTPStatusCodes.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"440D14111A99DD1D00EEB60B\"\n            BuildableName = \"HTTPStatusCodes.framework\"\n            BlueprintName = \"HTTPStatusCodes\"\n            ReferencedContainer = \"container:HTTPStatusCodes.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"440D14111A99DD1D00EEB60B\"\n            BuildableName = \"HTTPStatusCodes.framework\"\n            BlueprintName = \"HTTPStatusCodes\"\n            ReferencedContainer = \"container:HTTPStatusCodes.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Tests/HTTPStatusCodesTests/HTTPStatusCodesTests.swift",
    "content": "//\n//  HTTPStatusCodesTests.swift\n//  HTTPStatusCodesTests\n//\n//  Created by Richard Hodgkins on 22/02/2015.\n//  Copyright (c) 2015 Rich H. All rights reserved.\n//\n\nimport Foundation\n\n#if os(watchOS)\n// No testing supported\n@testable import HTTPStatusCodes\n#else\n\nimport XCTest\n\n#if DEBUG\n@testable import HTTPStatusCodes\n#else\nimport HTTPStatusCodes\n#endif\n\nprivate func responseUsingInt(_ statusCode: Int) -> HTTPURLResponse {\n    return HTTPURLResponse(url: URL(string: \"http://www.google.com\")!, statusCode: statusCode, httpVersion: nil, headerFields: nil)!\n}\nprivate func responseUsingRawValue(_ statusCode: HTTPStatusCode) -> HTTPURLResponse {\n    return HTTPURLResponse(url: URL(string: \"http://www.google.com\")!, statusCode: statusCode.rawValue, httpVersion: nil, headerFields: nil)!\n}\nprivate func responseUsingEnum(_ statusCode: HTTPStatusCode) -> HTTPURLResponse {\n    return HTTPURLResponse(url: URL(string: \"http://www.google.com\")!, statusCode: statusCode, httpVersion: nil, headerFields: nil)!\n}\n\nfinal class HTTPStatusCodesTests: XCTestCase {\n    \n    func testNSHTTPURLResponseInitUsingInt() {\n        XCTAssertEqual(responseUsingRawValue(.continue).statusCode, 100, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingRawValue(.ok).statusCode, 200, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingRawValue(.multipleChoices).statusCode, 300, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingRawValue(.badRequest).statusCode, 400, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingRawValue(.internalServerError).statusCode, 500, \"Incorrect status code\")\n    }\n    \n    func testNSHTTPURLResponseInitUsingEnum() {\n        XCTAssertEqual(responseUsingEnum(.continue).statusCode, 100, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingEnum(.ok).statusCode, 200, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingEnum(.multipleChoices).statusCode, 300, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingEnum(.badRequest).statusCode, 400, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingEnum(.internalServerError).statusCode, 500, \"Incorrect status code\")\n    }\n    \n    func testComputedStatusCodeValueProperty() {\n        XCTAssertEqual(responseUsingInt(100).statusCodeValue!, HTTPStatusCode.continue, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingInt(200).statusCodeValue!, HTTPStatusCode.ok, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingInt(300).statusCodeValue!, HTTPStatusCode.multipleChoices, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingInt(400).statusCodeValue!, HTTPStatusCode.badRequest, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingInt(500).statusCodeValue!, HTTPStatusCode.internalServerError, \"Incorrect status code\")\n    }\n    \n#if DEBUG\n    func testComputedStatusCodeEnumProperty() {\n        XCTAssertEqual(responseUsingInt(100).statusCodeEnum, HTTPStatusCode.continue, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingInt(200).statusCodeEnum, HTTPStatusCode.ok, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingInt(300).statusCodeEnum, HTTPStatusCode.multipleChoices, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingInt(400).statusCodeEnum, HTTPStatusCode.badRequest, \"Incorrect status code\")\n        XCTAssertEqual(responseUsingInt(500).statusCodeEnum, HTTPStatusCode.internalServerError, \"Incorrect status code\")\n    }\n#endif\n\n    func testHTTPStatusCodeInit() {\n        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(100))!, HTTPStatusCode.continue, \"Incorrect status code\")\n        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(200))!, HTTPStatusCode.ok, \"Incorrect status code\")\n        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(300))!, HTTPStatusCode.multipleChoices, \"Incorrect status code\")\n        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(400))!, HTTPStatusCode.badRequest, \"Incorrect status code\")\n        XCTAssertEqual(HTTPStatusCode(HTTPResponse: responseUsingInt(500))!, HTTPStatusCode.internalServerError, \"Incorrect status code\")\n    }\n    \n    func testValidBooleanRangeChecks() {\n        for i in 100...199 {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertTrue(statusCode.isInformational, \"Should be informational status code\")\n            }\n        }\n        for i in 200...299 {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertTrue(statusCode.isSuccess, \"Should be success status code\")\n            }\n        }\n        for i in 300...399 {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertTrue(statusCode.isRedirection, \"Should be redirection status code\")\n            }\n        }\n        for i in 400...499 {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertTrue(statusCode.isClientError, \"Should be client error status code\")\n            }\n        }\n        for i in 500...599 {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertTrue(statusCode.isServerError, \"Should be server error status code\")\n            }\n        }\n    }\n    \n    func testInvalidBooleanRangeChecks() {\n        \n        /// 0...1000 - `ignoredRange`\n        func range(ignoringRange ignoredRange: ClosedRange<Int>) -> [Int] {\n            return (0...1000).filter { !ignoredRange.contains($0) }\n        }\n        \n        for i in range(ignoringRange: 100...199) {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertFalse(statusCode.isInformational, \"Should be not informational status code\")\n            }\n        }\n        for i in range(ignoringRange: 200...299) {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertFalse(statusCode.isSuccess, \"Should be not success status code\")\n            }\n        }\n        for i in range(ignoringRange: 300...399) {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertFalse(statusCode.isRedirection, \"Should be not redirection status code\")\n            }\n        }\n        for i in range(ignoringRange: 400...499) {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertFalse(statusCode.isClientError, \"Should be not client error status code\")\n            }\n        }\n        for i in range(ignoringRange: 500...599) {\n            if let statusCode = HTTPStatusCode(rawValue: i) {\n                XCTAssertFalse(statusCode.isServerError, \"Should be not server error status code\")\n            }\n        }\n    }\n    \n    func testReasonPhrase() {\n        XCTAssertEqual(HTTPStatusCode.continue.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.continue.rawValue))\n        \n        XCTAssertEqual(HTTPStatusCode.ok.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.ok.rawValue))\n        \n        XCTAssertEqual(HTTPStatusCode.multipleChoices.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.multipleChoices.rawValue))\n        \n        XCTAssertEqual(HTTPStatusCode.badRequest.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.badRequest.rawValue))\n        \n        XCTAssertEqual(HTTPStatusCode.internalServerError.localizedReasonPhrase, HTTPURLResponse.localizedString(forStatusCode: HTTPStatusCode.internalServerError.rawValue))\n    }\n    \n    func testDescription() {\n        XCTAssertEqual(String(describing: HTTPStatusCode.continue), \"\\(HTTPStatusCode.continue.rawValue) - \\(HTTPStatusCode.continue.localizedReasonPhrase)\")\n        \n        XCTAssertEqual(String(describing: HTTPStatusCode.ok), \"\\(HTTPStatusCode.ok.rawValue) - \\(HTTPStatusCode.ok.localizedReasonPhrase)\")\n        \n        XCTAssertEqual(String(describing: HTTPStatusCode.multipleChoices), \"\\(HTTPStatusCode.multipleChoices.rawValue) - \\(HTTPStatusCode.multipleChoices.localizedReasonPhrase)\")\n        \n        XCTAssertEqual(String(describing: HTTPStatusCode.badRequest), \"\\(HTTPStatusCode.badRequest.rawValue) - \\(HTTPStatusCode.badRequest.localizedReasonPhrase)\")\n        \n        XCTAssertEqual(String(describing: HTTPStatusCode.internalServerError), \"\\(HTTPStatusCode.internalServerError.rawValue) - \\(HTTPStatusCode.internalServerError.localizedReasonPhrase)\")\n    }\n    \n    func testDebugDescription() {\n        XCTAssertEqual(String(reflecting: HTTPStatusCode.continue), \"HTTPStatusCode:\\(HTTPStatusCode.continue.rawValue) - \\(HTTPStatusCode.continue.localizedReasonPhrase)\")\n        \n        XCTAssertEqual(String(reflecting: HTTPStatusCode.ok), \"HTTPStatusCode:\\(HTTPStatusCode.ok.rawValue) - \\(HTTPStatusCode.ok.localizedReasonPhrase)\")\n        \n        XCTAssertEqual(String(reflecting: HTTPStatusCode.multipleChoices), \"HTTPStatusCode:\\(HTTPStatusCode.multipleChoices.rawValue) - \\(HTTPStatusCode.multipleChoices.localizedReasonPhrase)\")\n        \n        XCTAssertEqual(String(reflecting: HTTPStatusCode.badRequest), \"HTTPStatusCode:\\(HTTPStatusCode.badRequest.rawValue) - \\(HTTPStatusCode.badRequest.localizedReasonPhrase)\")\n        \n        XCTAssertEqual(String(reflecting: HTTPStatusCode.internalServerError), \"HTTPStatusCode:\\(HTTPStatusCode.internalServerError.rawValue) - \\(HTTPStatusCode.internalServerError.localizedReasonPhrase)\")\n    }\n    \n    func testBadStatusCodes() {\n        XCTAssertTrue(HTTPStatusCode(rawValue: 1000) == nil)\n        XCTAssertTrue(HTTPStatusCode(HTTPResponse: nil) == nil)\n        XCTAssertTrue(HTTPStatusCode(HTTPResponse: responseUsingInt(1000)) == nil)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/HTTPStatusCodesTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(HSC_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/HTTPStatusCodesTests/ObjectiveCRegressionTests.m",
    "content": "//\n//  ObjectiveCRegressionTests.m\n//  ObjectiveCTests\n//\n//  Created by Richard Hodgkins on 09/06/2016.\n//  Copyright © 2016 Rich H. All rights reserved.\n//\n\n@import Foundation;\n\n#if TARGET_OS_WATCH\n// No testing supported\n#else\n\n@import XCTest;\n@import HTTPStatusCodes;\n\n#import <HTTPStatusCodes/HTTPStatusCodes-Swift.h>\n\n@interface ObjectiveCRegressionTests : XCTestCase\n\n@end\n\n// Create with copy and paste of the enum and use:\n//    FIND: \\s*\\n?(?:\\s*///\\s*.+\\n)+\\s*case (.+) = ([0-9]+)\n// REPLACE: XCTAssertEqual(HTTPStatusCode\\1, \\2);\\n\n@implementation ObjectiveCRegressionTests\n\n-(void)testVersion2_0\n{\n    XCTAssertEqual(HTTPStatusCodeContinue, 100);\n    XCTAssertEqual(HTTPStatusCodeSwitchingProtocols, 101);\n    XCTAssertEqual(HTTPStatusCodeProcessing, 102);\n    XCTAssertEqual(HTTPStatusCodeOK, 200);\n    XCTAssertEqual(HTTPStatusCodeCreated, 201);\n    XCTAssertEqual(HTTPStatusCodeAccepted, 202);\n    XCTAssertEqual(HTTPStatusCodeNonAuthoritativeInformation, 203);\n    XCTAssertEqual(HTTPStatusCodeNoContent, 204);\n    XCTAssertEqual(HTTPStatusCodeResetContent, 205);\n    XCTAssertEqual(HTTPStatusCodePartialContent, 206);\n    XCTAssertEqual(HTTPStatusCodeMultiStatus, 207);\n    XCTAssertEqual(HTTPStatusCodeAlreadyReported, 208);\n    XCTAssertEqual(HTTPStatusCodeIMUsed, 226);\n    XCTAssertEqual(HTTPStatusCodeMultipleChoices, 300);\n    XCTAssertEqual(HTTPStatusCodeMovedPermanently, 301);\n    XCTAssertEqual(HTTPStatusCodeFound, 302);\n    XCTAssertEqual(HTTPStatusCodeSeeOther, 303);\n    XCTAssertEqual(HTTPStatusCodeNotModified, 304);\n    XCTAssertEqual(HTTPStatusCodeUseProxy, 305);\n    XCTAssertEqual(HTTPStatusCodeTemporaryRedirect, 307);\n    XCTAssertEqual(HTTPStatusCodePermanentRedirect, 308);\n    XCTAssertEqual(HTTPStatusCodeBadRequest, 400);\n    XCTAssertEqual(HTTPStatusCodeUnauthorized, 401);\n    XCTAssertEqual(HTTPStatusCodePaymentRequired, 402);\n    XCTAssertEqual(HTTPStatusCodeForbidden, 403);\n    XCTAssertEqual(HTTPStatusCodeNotFound, 404);\n    XCTAssertEqual(HTTPStatusCodeMethodNotAllowed, 405);\n    XCTAssertEqual(HTTPStatusCodeNotAcceptable, 406);\n    XCTAssertEqual(HTTPStatusCodeProxyAuthenticationRequired, 407);\n    XCTAssertEqual(HTTPStatusCodeRequestTimeout, 408);\n    XCTAssertEqual(HTTPStatusCodeConflict, 409);\n    XCTAssertEqual(HTTPStatusCodeGone, 410);\n    XCTAssertEqual(HTTPStatusCodeLengthRequired, 411);\n    XCTAssertEqual(HTTPStatusCodePreconditionFailed, 412);\n    XCTAssertEqual(HTTPStatusCodeRequestEntityTooLarge, 413);\n    XCTAssertEqual(HTTPStatusCodeRequestURITooLong, 414);\n    XCTAssertEqual(HTTPStatusCodeUnsupportedMediaType, 415);\n    XCTAssertEqual(HTTPStatusCodeRequestedRangeNotSatisfiable, 416);\n    XCTAssertEqual(HTTPStatusCodeExpectationFailed, 417);\n    XCTAssertEqual(HTTPStatusCodeImATeapot, 418);\n//    XCTAssertEqual(HTTPStatusCodeAuthenticationTimeout, 419);\n    XCTAssertEqual(HTTPStatusCodeUnprocessableEntity, 422);\n    XCTAssertEqual(HTTPStatusCodeLocked, 423);\n    XCTAssertEqual(HTTPStatusCodeFailedDependency, 424);\n    XCTAssertEqual(HTTPStatusCodeUpgradeRequired, 426);\n    XCTAssertEqual(HTTPStatusCodePreconditionRequired, 428);\n    XCTAssertEqual(HTTPStatusCodeTooManyRequests, 429);\n    XCTAssertEqual(HTTPStatusCodeRequestHeaderFieldsTooLarge, 431);\n    XCTAssertEqual(HTTPStatusCodeLoginTimeout, 440);\n    XCTAssertEqual(HTTPStatusCodeNoResponse, 444);\n    XCTAssertEqual(HTTPStatusCodeRetryWith, 449);\n    XCTAssertEqual(HTTPStatusCodeUnavailableForLegalReasons, 451);\n//    XCTAssertEqual(HTTPStatusCodeRequestHeaderTooLarge, 494);\n    XCTAssertEqual(HTTPStatusCodeCertError, 495);\n    XCTAssertEqual(HTTPStatusCodeNoCert, 496);\n    XCTAssertEqual(HTTPStatusCodeHTTPToHTTPS, 497);\n    XCTAssertEqual(HTTPStatusCodeTokenExpired, 498);\n    XCTAssertEqual(HTTPStatusCodeClientClosedRequest, 499);\n    XCTAssertEqual(HTTPStatusCodeInternalServerError, 500);\n    XCTAssertEqual(HTTPStatusCodeNotImplemented, 501);\n    XCTAssertEqual(HTTPStatusCodeBadGateway, 502);\n    XCTAssertEqual(HTTPStatusCodeServiceUnavailable, 503);\n    XCTAssertEqual(HTTPStatusCodeGatewayTimeout, 504);\n    XCTAssertEqual(HTTPStatusCodeHTTPVersionNotSupported, 505);\n    XCTAssertEqual(HTTPStatusCodeVariantAlsoNegotiates, 506);\n    XCTAssertEqual(HTTPStatusCodeInsufficientStorage, 507);\n    XCTAssertEqual(HTTPStatusCodeLoopDetected, 508);\n    XCTAssertEqual(HTTPStatusCodeBandwidthLimitExceeded, 509);\n    XCTAssertEqual(HTTPStatusCodeNotExtended, 510);\n    XCTAssertEqual(HTTPStatusCodeNetworkAuthenticationRequired, 511);\n}\n\n-(void)testVersion3_0\n{\n    XCTAssertEqual(HTTPStatusCodeContinue, 100);\n    XCTAssertEqual(HTTPStatusCodeSwitchingProtocols, 101);\n    XCTAssertEqual(HTTPStatusCodeProcessing, 102);\n//    XCTAssertEqual(HTTPStatusCodeCheckpoint, 103);\n    XCTAssertEqual(HTTPStatusCodeOK, 200);\n    XCTAssertEqual(HTTPStatusCodeCreated, 201);\n    XCTAssertEqual(HTTPStatusCodeAccepted, 202);\n    XCTAssertEqual(HTTPStatusCodeNonAuthoritativeInformation, 203);\n    XCTAssertEqual(HTTPStatusCodeNoContent, 204);\n    XCTAssertEqual(HTTPStatusCodeResetContent, 205);\n    XCTAssertEqual(HTTPStatusCodePartialContent, 206);\n    XCTAssertEqual(HTTPStatusCodeMultiStatus, 207);\n    XCTAssertEqual(HTTPStatusCodeAlreadyReported, 208);\n    XCTAssertEqual(HTTPStatusCodeIMUsed, 226);\n    XCTAssertEqual(HTTPStatusCodeMultipleChoices, 300);\n    XCTAssertEqual(HTTPStatusCodeMovedPermanently, 301);\n    XCTAssertEqual(HTTPStatusCodeFound, 302);\n    XCTAssertEqual(HTTPStatusCodeSeeOther, 303);\n    XCTAssertEqual(HTTPStatusCodeNotModified, 304);\n    XCTAssertEqual(HTTPStatusCodeUseProxy, 305);\n    XCTAssertEqual(HTTPStatusCodeTemporaryRedirect, 307);\n    XCTAssertEqual(HTTPStatusCodePermanentRedirect, 308);\n    XCTAssertEqual(HTTPStatusCodeBadRequest, 400);\n    XCTAssertEqual(HTTPStatusCodeUnauthorized, 401);\n    XCTAssertEqual(HTTPStatusCodePaymentRequired, 402);\n    XCTAssertEqual(HTTPStatusCodeForbidden, 403);\n    XCTAssertEqual(HTTPStatusCodeNotFound, 404);\n    XCTAssertEqual(HTTPStatusCodeMethodNotAllowed, 405);\n    XCTAssertEqual(HTTPStatusCodeNotAcceptable, 406);\n    XCTAssertEqual(HTTPStatusCodeProxyAuthenticationRequired, 407);\n    XCTAssertEqual(HTTPStatusCodeRequestTimeout, 408);\n    XCTAssertEqual(HTTPStatusCodeConflict, 409);\n    XCTAssertEqual(HTTPStatusCodeGone, 410);\n    XCTAssertEqual(HTTPStatusCodeLengthRequired, 411);\n    XCTAssertEqual(HTTPStatusCodePreconditionFailed, 412);\n    XCTAssertEqual(HTTPStatusCodePayloadTooLarge, 413);\n    XCTAssertEqual(HTTPStatusCodeURITooLong, 414);\n    XCTAssertEqual(HTTPStatusCodeUnsupportedMediaType, 415);\n    XCTAssertEqual(HTTPStatusCodeRangeNotSatisfiable, 416);\n    XCTAssertEqual(HTTPStatusCodeExpectationFailed, 417);\n    XCTAssertEqual(HTTPStatusCodeImATeapot, 418);\n    XCTAssertEqual(HTTPStatusCodeMisdirectedRequest, 421);\n    XCTAssertEqual(HTTPStatusCodeUnprocessableEntity, 422);\n    XCTAssertEqual(HTTPStatusCodeLocked, 423);\n    XCTAssertEqual(HTTPStatusCodeFailedDependency, 424);\n    XCTAssertEqual(HTTPStatusCodeUpgradeRequired, 426);\n    XCTAssertEqual(HTTPStatusCodePreconditionRequired, 428);\n    XCTAssertEqual(HTTPStatusCodeTooManyRequests, 429);\n    XCTAssertEqual(HTTPStatusCodeRequestHeaderFieldsTooLarge, 431);\n    XCTAssertEqual(HTTPStatusCodeIISLoginTimeout, 440);\n    XCTAssertEqual(HTTPStatusCodeNginxNoResponse, 444);\n    XCTAssertEqual(HTTPStatusCodeIISRetryWith, 449);\n    XCTAssertEqual(HTTPStatusCodeBlockedByWindowsParentalControls, 450);\n    XCTAssertEqual(HTTPStatusCodeUnavailableForLegalReasons, 451);\n    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateError, 495);\n    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateRequired, 496);\n    XCTAssertEqual(HTTPStatusCodeNginxHTTPToHTTPS, 497);\n    XCTAssertEqual(HTTPStatusCodeTokenExpired, 498);\n    XCTAssertEqual(HTTPStatusCodeNginxClientClosedRequest, 499);\n    XCTAssertEqual(HTTPStatusCodeInternalServerError, 500);\n    XCTAssertEqual(HTTPStatusCodeNotImplemented, 501);\n    XCTAssertEqual(HTTPStatusCodeBadGateway, 502);\n    XCTAssertEqual(HTTPStatusCodeServiceUnavailable, 503);\n    XCTAssertEqual(HTTPStatusCodeGatewayTimeout, 504);\n    XCTAssertEqual(HTTPStatusCodeHTTPVersionNotSupported, 505);\n    XCTAssertEqual(HTTPStatusCodeVariantAlsoNegotiates, 506);\n    XCTAssertEqual(HTTPStatusCodeInsufficientStorage, 507);\n    XCTAssertEqual(HTTPStatusCodeLoopDetected, 508);\n    XCTAssertEqual(HTTPStatusCodeBandwidthLimitExceeded, 509);\n    XCTAssertEqual(HTTPStatusCodeNotExtended, 510);\n    XCTAssertEqual(HTTPStatusCodeNetworkAuthenticationRequired, 511);\n    XCTAssertEqual(HTTPStatusCodeSiteIsFrozen, 530);\n    XCTAssertEqual(HTTPStatusCodeNetworkConnectTimeoutError, 599);\n    XCTAssertEqual(HTTPStatusCodeNetworkTimeoutError, 599);\n}\n\n-(void)testVersion3_2\n{\n    XCTAssertEqual(HTTPStatusCodeContinue, 100);\n    XCTAssertEqual(HTTPStatusCodeSwitchingProtocols, 101);\n    XCTAssertEqual(HTTPStatusCodeProcessing, 102);\n    XCTAssertEqual(HTTPStatusCodeEarlyHints, 103);\n    XCTAssertEqual(HTTPStatusCodeOK, 200);\n    XCTAssertEqual(HTTPStatusCodeCreated, 201);\n    XCTAssertEqual(HTTPStatusCodeAccepted, 202);\n    XCTAssertEqual(HTTPStatusCodeNonAuthoritativeInformation, 203);\n    XCTAssertEqual(HTTPStatusCodeNoContent, 204);\n    XCTAssertEqual(HTTPStatusCodeResetContent, 205);\n    XCTAssertEqual(HTTPStatusCodePartialContent, 206);\n    XCTAssertEqual(HTTPStatusCodeMultiStatus, 207);\n    XCTAssertEqual(HTTPStatusCodeAlreadyReported, 208);\n    XCTAssertEqual(HTTPStatusCodeIMUsed, 226);\n    XCTAssertEqual(HTTPStatusCodeMultipleChoices, 300);\n    XCTAssertEqual(HTTPStatusCodeMovedPermanently, 301);\n    XCTAssertEqual(HTTPStatusCodeFound, 302);\n    XCTAssertEqual(HTTPStatusCodeSeeOther, 303);\n    XCTAssertEqual(HTTPStatusCodeNotModified, 304);\n    XCTAssertEqual(HTTPStatusCodeUseProxy, 305);\n    XCTAssertEqual(HTTPStatusCodeTemporaryRedirect, 307);\n    XCTAssertEqual(HTTPStatusCodePermanentRedirect, 308);\n    XCTAssertEqual(HTTPStatusCodeBadRequest, 400);\n    XCTAssertEqual(HTTPStatusCodeUnauthorized, 401);\n    XCTAssertEqual(HTTPStatusCodePaymentRequired, 402);\n    XCTAssertEqual(HTTPStatusCodeForbidden, 403);\n    XCTAssertEqual(HTTPStatusCodeNotFound, 404);\n    XCTAssertEqual(HTTPStatusCodeMethodNotAllowed, 405);\n    XCTAssertEqual(HTTPStatusCodeNotAcceptable, 406);\n    XCTAssertEqual(HTTPStatusCodeProxyAuthenticationRequired, 407);\n    XCTAssertEqual(HTTPStatusCodeRequestTimeout, 408);\n    XCTAssertEqual(HTTPStatusCodeConflict, 409);\n    XCTAssertEqual(HTTPStatusCodeGone, 410);\n    XCTAssertEqual(HTTPStatusCodeLengthRequired, 411);\n    XCTAssertEqual(HTTPStatusCodePreconditionFailed, 412);\n    XCTAssertEqual(HTTPStatusCodePayloadTooLarge, 413);\n    XCTAssertEqual(HTTPStatusCodeURITooLong, 414);\n    XCTAssertEqual(HTTPStatusCodeUnsupportedMediaType, 415);\n    XCTAssertEqual(HTTPStatusCodeRangeNotSatisfiable, 416);\n    XCTAssertEqual(HTTPStatusCodeExpectationFailed, 417);\n    XCTAssertEqual(HTTPStatusCodeImATeapot, 418);\n    XCTAssertEqual(HTTPStatusCodeMisdirectedRequest, 421);\n    XCTAssertEqual(HTTPStatusCodeUnprocessableEntity, 422);\n    XCTAssertEqual(HTTPStatusCodeLocked, 423);\n    XCTAssertEqual(HTTPStatusCodeFailedDependency, 424);\n    XCTAssertEqual(HTTPStatusCodeUpgradeRequired, 426);\n    XCTAssertEqual(HTTPStatusCodePreconditionRequired, 428);\n    XCTAssertEqual(HTTPStatusCodeTooManyRequests, 429);\n    XCTAssertEqual(HTTPStatusCodeRequestHeaderFieldsTooLarge, 431);\n    XCTAssertEqual(HTTPStatusCodeIISLoginTimeout, 440);\n    XCTAssertEqual(HTTPStatusCodeNginxNoResponse, 444);\n    XCTAssertEqual(HTTPStatusCodeIISRetryWith, 449);\n    XCTAssertEqual(HTTPStatusCodeBlockedByWindowsParentalControls, 450);\n    XCTAssertEqual(HTTPStatusCodeUnavailableForLegalReasons, 451);\n    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateError, 495);\n    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateRequired, 496);\n    XCTAssertEqual(HTTPStatusCodeNginxHTTPToHTTPS, 497);\n    XCTAssertEqual(HTTPStatusCodeTokenExpired, 498);\n    XCTAssertEqual(HTTPStatusCodeNginxClientClosedRequest, 499);\n    XCTAssertEqual(HTTPStatusCodeInternalServerError, 500);\n    XCTAssertEqual(HTTPStatusCodeNotImplemented, 501);\n    XCTAssertEqual(HTTPStatusCodeBadGateway, 502);\n    XCTAssertEqual(HTTPStatusCodeServiceUnavailable, 503);\n    XCTAssertEqual(HTTPStatusCodeGatewayTimeout, 504);\n    XCTAssertEqual(HTTPStatusCodeHTTPVersionNotSupported, 505);\n    XCTAssertEqual(HTTPStatusCodeVariantAlsoNegotiates, 506);\n    XCTAssertEqual(HTTPStatusCodeInsufficientStorage, 507);\n    XCTAssertEqual(HTTPStatusCodeLoopDetected, 508);\n    XCTAssertEqual(HTTPStatusCodeBandwidthLimitExceeded, 509);\n    XCTAssertEqual(HTTPStatusCodeNotExtended, 510);\n    XCTAssertEqual(HTTPStatusCodeNetworkAuthenticationRequired, 511);\n    XCTAssertEqual(HTTPStatusCodeSiteIsFrozen, 530);\n    XCTAssertEqual(HTTPStatusCodeNetworkConnectTimeoutError, 599);\n}\n\n-(void)testVersion3_3\n{\n    XCTAssertEqual(HTTPStatusCodeContinue, 100);\n    XCTAssertEqual(HTTPStatusCodeSwitchingProtocols, 101);\n    XCTAssertEqual(HTTPStatusCodeProcessing, 102);\n    XCTAssertEqual(HTTPStatusCodeEarlyHints, 103);\n    XCTAssertEqual(HTTPStatusCodeOK, 200);\n    XCTAssertEqual(HTTPStatusCodeCreated, 201);\n    XCTAssertEqual(HTTPStatusCodeAccepted, 202);\n    XCTAssertEqual(HTTPStatusCodeNonAuthoritativeInformation, 203);\n    XCTAssertEqual(HTTPStatusCodeNoContent, 204);\n    XCTAssertEqual(HTTPStatusCodeResetContent, 205);\n    XCTAssertEqual(HTTPStatusCodePartialContent, 206);\n    XCTAssertEqual(HTTPStatusCodeMultiStatus, 207);\n    XCTAssertEqual(HTTPStatusCodeAlreadyReported, 208);\n    XCTAssertEqual(HTTPStatusCodeIMUsed, 226);\n    XCTAssertEqual(HTTPStatusCodeMultipleChoices, 300);\n    XCTAssertEqual(HTTPStatusCodeMovedPermanently, 301);\n    XCTAssertEqual(HTTPStatusCodeFound, 302);\n    XCTAssertEqual(HTTPStatusCodeSeeOther, 303);\n    XCTAssertEqual(HTTPStatusCodeNotModified, 304);\n    XCTAssertEqual(HTTPStatusCodeUseProxy, 305);\n    XCTAssertEqual(HTTPStatusCodeTemporaryRedirect, 307);\n    XCTAssertEqual(HTTPStatusCodePermanentRedirect, 308);\n    XCTAssertEqual(HTTPStatusCodeBadRequest, 400);\n    XCTAssertEqual(HTTPStatusCodeUnauthorized, 401);\n    XCTAssertEqual(HTTPStatusCodePaymentRequired, 402);\n    XCTAssertEqual(HTTPStatusCodeForbidden, 403);\n    XCTAssertEqual(HTTPStatusCodeNotFound, 404);\n    XCTAssertEqual(HTTPStatusCodeMethodNotAllowed, 405);\n    XCTAssertEqual(HTTPStatusCodeNotAcceptable, 406);\n    XCTAssertEqual(HTTPStatusCodeProxyAuthenticationRequired, 407);\n    XCTAssertEqual(HTTPStatusCodeRequestTimeout, 408);\n    XCTAssertEqual(HTTPStatusCodeConflict, 409);\n    XCTAssertEqual(HTTPStatusCodeGone, 410);\n    XCTAssertEqual(HTTPStatusCodeLengthRequired, 411);\n    XCTAssertEqual(HTTPStatusCodePreconditionFailed, 412);\n    XCTAssertEqual(HTTPStatusCodePayloadTooLarge, 413);\n    XCTAssertEqual(HTTPStatusCodeURITooLong, 414);\n    XCTAssertEqual(HTTPStatusCodeUnsupportedMediaType, 415);\n    XCTAssertEqual(HTTPStatusCodeRangeNotSatisfiable, 416);\n    XCTAssertEqual(HTTPStatusCodeExpectationFailed, 417);\n    XCTAssertEqual(HTTPStatusCodeImATeapot, 418);\n    XCTAssertEqual(HTTPStatusCodeMisdirectedRequest, 421);\n    XCTAssertEqual(HTTPStatusCodeUnprocessableEntity, 422);\n    XCTAssertEqual(HTTPStatusCodeLocked, 423);\n    XCTAssertEqual(HTTPStatusCodeFailedDependency, 424);\n    XCTAssertEqual(HTTPStatusCodeTooEarly, 425);\n    XCTAssertEqual(HTTPStatusCodeUpgradeRequired, 426);\n    XCTAssertEqual(HTTPStatusCodePreconditionRequired, 428);\n    XCTAssertEqual(HTTPStatusCodeTooManyRequests, 429);\n    XCTAssertEqual(HTTPStatusCodeRequestHeaderFieldsTooLarge, 431);\n    XCTAssertEqual(HTTPStatusCodeIISLoginTimeout, 440);\n    XCTAssertEqual(HTTPStatusCodeNginxNoResponse, 444);\n    XCTAssertEqual(HTTPStatusCodeIISRetryWith, 449);\n    XCTAssertEqual(HTTPStatusCodeBlockedByWindowsParentalControls, 450);\n    XCTAssertEqual(HTTPStatusCodeUnavailableForLegalReasons, 451);\n    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateError, 495);\n    XCTAssertEqual(HTTPStatusCodeNginxSSLCertificateRequired, 496);\n    XCTAssertEqual(HTTPStatusCodeNginxHTTPToHTTPS, 497);\n    XCTAssertEqual(HTTPStatusCodeTokenExpired, 498);\n    XCTAssertEqual(HTTPStatusCodeNginxClientClosedRequest, 499);\n    XCTAssertEqual(HTTPStatusCodeInternalServerError, 500);\n    XCTAssertEqual(HTTPStatusCodeNotImplemented, 501);\n    XCTAssertEqual(HTTPStatusCodeBadGateway, 502);\n    XCTAssertEqual(HTTPStatusCodeServiceUnavailable, 503);\n    XCTAssertEqual(HTTPStatusCodeGatewayTimeout, 504);\n    XCTAssertEqual(HTTPStatusCodeHTTPVersionNotSupported, 505);\n    XCTAssertEqual(HTTPStatusCodeVariantAlsoNegotiates, 506);\n    XCTAssertEqual(HTTPStatusCodeInsufficientStorage, 507);\n    XCTAssertEqual(HTTPStatusCodeLoopDetected, 508);\n    XCTAssertEqual(HTTPStatusCodeBandwidthLimitExceeded, 509);\n    XCTAssertEqual(HTTPStatusCodeNotExtended, 510);\n    XCTAssertEqual(HTTPStatusCodeNetworkAuthenticationRequired, 511);\n    XCTAssertEqual(HTTPStatusCodeSiteIsFrozen, 530);\n    XCTAssertEqual(HTTPStatusCodeNetworkConnectTimeoutError, 599);\n}\n\n@end\n#endif\n"
  },
  {
    "path": "Tests/HTTPStatusCodesTests/ObjectiveCTests.m",
    "content": "//\n//  ObjectiveCTests.m\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 12/10/2016.\n//  Copyright © 2016 Rich H. All rights reserved.\n//\n\n@import Foundation;\n\n#if TARGET_OS_WATCH\n// No testing supported\n#else\n\n@import XCTest;\n@import HTTPStatusCodes;\n\n#import <HTTPStatusCodes/HTTPStatusCodes-Swift.h>\n\nstatic NSHTTPURLResponse *_Nullable response(HTTPStatusCode statusCode) {\n    return [[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@\"http://www.google.com\"] statusCodeValue:statusCode HTTPVersion:nil headerFields:nil];\n}\n\n@interface ObjectiveCTests : XCTestCase\n\n@end\n\n@implementation ObjectiveCTests\n\n-(void)testComputedStatusCodeValueProperty\n{\n    XCTAssertEqual(response(HTTPStatusCodeContinue).statusCodeValue, HTTPStatusCodeContinue, @\"Incorrect status code\");\n    XCTAssertEqual(response(HTTPStatusCodeOK).statusCodeValue, HTTPStatusCodeOK, @\"Incorrect status code\");\n    XCTAssertEqual(response(HTTPStatusCodeMultipleChoices).statusCodeValue, HTTPStatusCodeMultipleChoices, @\"Incorrect status code\");\n    XCTAssertEqual(response(HTTPStatusCodeBadRequest).statusCodeValue, HTTPStatusCodeBadRequest, @\"Incorrect status code\");\n    XCTAssertEqual(response(HTTPStatusCodeInternalServerError).statusCodeValue, HTTPStatusCodeInternalServerError, @\"Incorrect status code\");\n}\n\n-(void)testNSHTTPURLResponseInit\n{\n    XCTAssertEqual([[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@\"http://www.google.com\"] statusCodeValue:HTTPStatusCodeOK HTTPVersion:nil headerFields:nil].statusCode, 200);\n    XCTAssertEqual([[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@\"http://www.google.com\"] statusCodeValue:HTTPStatusCodeOK HTTPVersion:nil headerFields:nil].statusCode, HTTPStatusCodeOK);\n    XCTAssertEqual([[NSHTTPURLResponse alloc] initWithURL:[NSURL URLWithString:@\"http://www.google.com\"] statusCodeValue:HTTPStatusCodeOK HTTPVersion:nil headerFields:nil].statusCodeValue, HTTPStatusCodeOK);\n}\n\n@end\n#endif\n"
  },
  {
    "path": "Tests/HTTPStatusCodesTests/RegressionTests.swift",
    "content": "//\n//  RegressionTests.swift\n//  HTTPStatusCodes\n//\n//  Created by Richard Hodgkins on 07/06/2016.\n//  Copyright © 2016 Rich H. All rights reserved.\n//\n\nimport Foundation\n\n#if os(watchOS)\n// No testing supported\n@testable import HTTPStatusCodes\n#else\n    \nimport XCTest\n    \n#if DEBUG\n@testable import HTTPStatusCodes\n#else\nimport HTTPStatusCodes\n#endif\n\nextension HTTPStatusCode: ExpressibleByIntegerLiteral {\n    public init(integerLiteral value: Int) {\n        guard let _ = HTTPStatusCode(rawValue: value) else {\n            fatalError(\"Invalid status code: \\(value)\")\n        }\n        self.init(rawValue: value)!\n    }\n}\n    \n// Create with copy and paste of the enum and use:\n//    FIND: \\s*\\n?(?:\\s*///\\s*.+\\n)+\\s*case (.+) = ([0-9]+)\n// REPLACE: XCTAssertEqual(HTTPStatusCode.\\1, \\2)\\n\nfinal class RegressionTests: XCTestCase {\n\n    func testVersion2_0() {\n        XCTAssertEqual(HTTPStatusCode.continue, 100)\n        XCTAssertEqual(HTTPStatusCode.switchingProtocols, 101)\n        XCTAssertEqual(HTTPStatusCode.processing, 102)\n        XCTAssertEqual(HTTPStatusCode.ok, 200)\n        XCTAssertEqual(HTTPStatusCode.created, 201)\n        XCTAssertEqual(HTTPStatusCode.accepted, 202)\n        XCTAssertEqual(HTTPStatusCode.nonAuthoritativeInformation, 203)\n        XCTAssertEqual(HTTPStatusCode.noContent, 204)\n        XCTAssertEqual(HTTPStatusCode.resetContent, 205)\n        XCTAssertEqual(HTTPStatusCode.partialContent, 206)\n        XCTAssertEqual(HTTPStatusCode.multiStatus, 207)\n        XCTAssertEqual(HTTPStatusCode.alreadyReported, 208)\n        XCTAssertEqual(HTTPStatusCode.imUsed, 226)\n        XCTAssertEqual(HTTPStatusCode.multipleChoices, 300)\n        XCTAssertEqual(HTTPStatusCode.movedPermanently, 301)\n        XCTAssertEqual(HTTPStatusCode.found, 302)\n        XCTAssertEqual(HTTPStatusCode.seeOther, 303)\n        XCTAssertEqual(HTTPStatusCode.notModified, 304)\n        XCTAssertEqual(HTTPStatusCode.useProxy, 305)\n        XCTAssertEqual(HTTPStatusCode.temporaryRedirect, 307)\n        XCTAssertEqual(HTTPStatusCode.permanentRedirect, 308)\n        XCTAssertEqual(HTTPStatusCode.badRequest, 400)\n        XCTAssertEqual(HTTPStatusCode.unauthorized, 401)\n        XCTAssertEqual(HTTPStatusCode.paymentRequired, 402)\n        XCTAssertEqual(HTTPStatusCode.forbidden, 403)\n        XCTAssertEqual(HTTPStatusCode.notFound, 404)\n        XCTAssertEqual(HTTPStatusCode.methodNotAllowed, 405)\n        XCTAssertEqual(HTTPStatusCode.notAcceptable, 406)\n        XCTAssertEqual(HTTPStatusCode.proxyAuthenticationRequired, 407)\n        XCTAssertEqual(HTTPStatusCode.requestTimeout, 408)\n        XCTAssertEqual(HTTPStatusCode.conflict, 409)\n        XCTAssertEqual(HTTPStatusCode.gone, 410)\n        XCTAssertEqual(HTTPStatusCode.lengthRequired, 411)\n        XCTAssertEqual(HTTPStatusCode.preconditionFailed, 412)\n        XCTAssertEqual(HTTPStatusCode.requestEntityTooLarge, 413)\n        XCTAssertEqual(HTTPStatusCode.requestURITooLong, 414)\n        XCTAssertEqual(HTTPStatusCode.unsupportedMediaType, 415)\n        XCTAssertEqual(HTTPStatusCode.requestedRangeNotSatisfiable, 416)\n        XCTAssertEqual(HTTPStatusCode.expectationFailed, 417)\n        XCTAssertEqual(HTTPStatusCode.imATeapot, 418)\n//        XCTAssertEqual(HTTPStatusCode.authenticationTimeout, 419)\n        XCTAssertEqual(HTTPStatusCode.unprocessableEntity, 422)\n        XCTAssertEqual(HTTPStatusCode.locked, 423)\n        XCTAssertEqual(HTTPStatusCode.failedDependency, 424)\n        XCTAssertEqual(HTTPStatusCode.upgradeRequired, 426)\n        XCTAssertEqual(HTTPStatusCode.preconditionRequired, 428)\n        XCTAssertEqual(HTTPStatusCode.tooManyRequests, 429)\n        XCTAssertEqual(HTTPStatusCode.requestHeaderFieldsTooLarge, 431)\n        XCTAssertEqual(HTTPStatusCode.loginTimeout, 440)\n        XCTAssertEqual(HTTPStatusCode.noResponse, 444)\n        XCTAssertEqual(HTTPStatusCode.retryWith, 449)\n        XCTAssertEqual(HTTPStatusCode.unavailableForLegalReasons, 451)\n//        XCTAssertEqual(HTTPStatusCode.requestHeaderTooLarge, 494)\n        XCTAssertEqual(HTTPStatusCode.certError, 495)\n        XCTAssertEqual(HTTPStatusCode.noCert, 496)\n        XCTAssertEqual(HTTPStatusCode.httpToHTTPS, 497)\n        XCTAssertEqual(HTTPStatusCode.tokenExpired, 498)\n        XCTAssertEqual(HTTPStatusCode.clientClosedRequest, 499)\n        XCTAssertEqual(HTTPStatusCode.internalServerError, 500)\n        XCTAssertEqual(HTTPStatusCode.notImplemented, 501)\n        XCTAssertEqual(HTTPStatusCode.badGateway, 502)\n        XCTAssertEqual(HTTPStatusCode.serviceUnavailable, 503)\n        XCTAssertEqual(HTTPStatusCode.gatewayTimeout, 504)\n        XCTAssertEqual(HTTPStatusCode.httpVersionNotSupported, 505)\n        XCTAssertEqual(HTTPStatusCode.variantAlsoNegotiates, 506)\n        XCTAssertEqual(HTTPStatusCode.insufficientStorage, 507)\n        XCTAssertEqual(HTTPStatusCode.loopDetected, 508)\n        XCTAssertEqual(HTTPStatusCode.bandwidthLimitExceeded, 509)\n        XCTAssertEqual(HTTPStatusCode.notExtended, 510)\n        XCTAssertEqual(HTTPStatusCode.networkAuthenticationRequired, 511)\n        \n        XCTAssertEqual(HTTPURLResponse(url: URL(string: \"http://www.google.com\")!, statusCode: .ok, HTTPVersion: nil, headerFields: nil)!.statusCodeValue, .ok)\n    }\n    \n    func testVersion3_0() {\n        XCTAssertEqual(HTTPStatusCode.continue, 100)\n        XCTAssertEqual(HTTPStatusCode.switchingProtocols, 101)\n        XCTAssertEqual(HTTPStatusCode.processing, 102)\n//        XCTAssertEqual(HTTPStatusCode.checkpoint, 103)\n        XCTAssertEqual(HTTPStatusCode.ok, 200)\n        XCTAssertEqual(HTTPStatusCode.created, 201)\n        XCTAssertEqual(HTTPStatusCode.accepted, 202)\n        XCTAssertEqual(HTTPStatusCode.nonAuthoritativeInformation, 203)\n        XCTAssertEqual(HTTPStatusCode.noContent, 204)\n        XCTAssertEqual(HTTPStatusCode.resetContent, 205)\n        XCTAssertEqual(HTTPStatusCode.partialContent, 206)\n        XCTAssertEqual(HTTPStatusCode.multiStatus, 207)\n        XCTAssertEqual(HTTPStatusCode.alreadyReported, 208)\n        XCTAssertEqual(HTTPStatusCode.imUsed, 226)\n        XCTAssertEqual(HTTPStatusCode.multipleChoices, 300)\n        XCTAssertEqual(HTTPStatusCode.movedPermanently, 301)\n        XCTAssertEqual(HTTPStatusCode.found, 302)\n        XCTAssertEqual(HTTPStatusCode.seeOther, 303)\n        XCTAssertEqual(HTTPStatusCode.notModified, 304)\n        XCTAssertEqual(HTTPStatusCode.useProxy, 305)\n        XCTAssertEqual(HTTPStatusCode.temporaryRedirect, 307)\n        XCTAssertEqual(HTTPStatusCode.permanentRedirect, 308)\n        XCTAssertEqual(HTTPStatusCode.badRequest, 400)\n        XCTAssertEqual(HTTPStatusCode.unauthorized, 401)\n        XCTAssertEqual(HTTPStatusCode.paymentRequired, 402)\n        XCTAssertEqual(HTTPStatusCode.forbidden, 403)\n        XCTAssertEqual(HTTPStatusCode.notFound, 404)\n        XCTAssertEqual(HTTPStatusCode.methodNotAllowed, 405)\n        XCTAssertEqual(HTTPStatusCode.notAcceptable, 406)\n        XCTAssertEqual(HTTPStatusCode.proxyAuthenticationRequired, 407)\n        XCTAssertEqual(HTTPStatusCode.requestTimeout, 408)\n        XCTAssertEqual(HTTPStatusCode.conflict, 409)\n        XCTAssertEqual(HTTPStatusCode.gone, 410)\n        XCTAssertEqual(HTTPStatusCode.lengthRequired, 411)\n        XCTAssertEqual(HTTPStatusCode.preconditionFailed, 412)\n        XCTAssertEqual(HTTPStatusCode.payloadTooLarge, 413)\n        XCTAssertEqual(HTTPStatusCode.uriTooLong, 414)\n        XCTAssertEqual(HTTPStatusCode.unsupportedMediaType, 415)\n        XCTAssertEqual(HTTPStatusCode.rangeNotSatisfiable, 416)\n        XCTAssertEqual(HTTPStatusCode.expectationFailed, 417)\n        XCTAssertEqual(HTTPStatusCode.imATeapot, 418)\n        XCTAssertEqual(HTTPStatusCode.misdirectedRequest, 421)\n        XCTAssertEqual(HTTPStatusCode.unprocessableEntity, 422)\n        XCTAssertEqual(HTTPStatusCode.locked, 423)\n        XCTAssertEqual(HTTPStatusCode.failedDependency, 424)\n        XCTAssertEqual(HTTPStatusCode.upgradeRequired, 426)\n        XCTAssertEqual(HTTPStatusCode.preconditionRequired, 428)\n        XCTAssertEqual(HTTPStatusCode.tooManyRequests, 429)\n        XCTAssertEqual(HTTPStatusCode.requestHeaderFieldsTooLarge, 431)\n        XCTAssertEqual(HTTPStatusCode.iisLoginTimeout, 440)\n        XCTAssertEqual(HTTPStatusCode.nginxNoResponse, 444)\n        XCTAssertEqual(HTTPStatusCode.iisRetryWith, 449)\n        XCTAssertEqual(HTTPStatusCode.blockedByWindowsParentalControls, 450)\n        XCTAssertEqual(HTTPStatusCode.unavailableForLegalReasons, 451)\n        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateError, 495)\n        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateRequired, 496)\n        XCTAssertEqual(HTTPStatusCode.nginxHTTPToHTTPS, 497)\n        XCTAssertEqual(HTTPStatusCode.tokenExpired, 498)\n        XCTAssertEqual(HTTPStatusCode.nginxClientClosedRequest, 499)\n        XCTAssertEqual(HTTPStatusCode.internalServerError, 500)\n        XCTAssertEqual(HTTPStatusCode.notImplemented, 501)\n        XCTAssertEqual(HTTPStatusCode.badGateway, 502)\n        XCTAssertEqual(HTTPStatusCode.serviceUnavailable, 503)\n        XCTAssertEqual(HTTPStatusCode.gatewayTimeout, 504)\n        XCTAssertEqual(HTTPStatusCode.httpVersionNotSupported, 505)\n        XCTAssertEqual(HTTPStatusCode.variantAlsoNegotiates, 506)\n        XCTAssertEqual(HTTPStatusCode.insufficientStorage, 507)\n        XCTAssertEqual(HTTPStatusCode.loopDetected, 508)\n        XCTAssertEqual(HTTPStatusCode.bandwidthLimitExceeded, 509)\n        XCTAssertEqual(HTTPStatusCode.notExtended, 510)\n        XCTAssertEqual(HTTPStatusCode.networkAuthenticationRequired, 511)\n        XCTAssertEqual(HTTPStatusCode.siteIsFrozen, 530)\n        XCTAssertEqual(HTTPStatusCode.networkConnectTimeoutError, 599)\n        XCTAssertEqual(HTTPStatusCode.networkTimeoutError, 599)\n        \n        XCTAssertEqual(HTTPURLResponse(url: URL(string: \"http://www.google.com\")!, statusCode: .ok, httpVersion: nil, headerFields: nil)!.statusCodeValue, .ok)\n    }\n    \n    func testVersion3_2() {\n        XCTAssertEqual(HTTPStatusCode.continue, 100)\n        XCTAssertEqual(HTTPStatusCode.switchingProtocols, 101)\n        XCTAssertEqual(HTTPStatusCode.processing, 102)\n        XCTAssertEqual(HTTPStatusCode.earlyHints, 103)\n        XCTAssertEqual(HTTPStatusCode.ok, 200)\n        XCTAssertEqual(HTTPStatusCode.created, 201)\n        XCTAssertEqual(HTTPStatusCode.accepted, 202)\n        XCTAssertEqual(HTTPStatusCode.nonAuthoritativeInformation, 203)\n        XCTAssertEqual(HTTPStatusCode.noContent, 204)\n        XCTAssertEqual(HTTPStatusCode.resetContent, 205)\n        XCTAssertEqual(HTTPStatusCode.partialContent, 206)\n        XCTAssertEqual(HTTPStatusCode.multiStatus, 207)\n        XCTAssertEqual(HTTPStatusCode.alreadyReported, 208)\n        XCTAssertEqual(HTTPStatusCode.imUsed, 226)\n        XCTAssertEqual(HTTPStatusCode.multipleChoices, 300)\n        XCTAssertEqual(HTTPStatusCode.movedPermanently, 301)\n        XCTAssertEqual(HTTPStatusCode.found, 302)\n        XCTAssertEqual(HTTPStatusCode.seeOther, 303)\n        XCTAssertEqual(HTTPStatusCode.notModified, 304)\n        XCTAssertEqual(HTTPStatusCode.useProxy, 305)\n        XCTAssertEqual(HTTPStatusCode.temporaryRedirect, 307)\n        XCTAssertEqual(HTTPStatusCode.permanentRedirect, 308)\n        XCTAssertEqual(HTTPStatusCode.badRequest, 400)\n        XCTAssertEqual(HTTPStatusCode.unauthorized, 401)\n        XCTAssertEqual(HTTPStatusCode.paymentRequired, 402)\n        XCTAssertEqual(HTTPStatusCode.forbidden, 403)\n        XCTAssertEqual(HTTPStatusCode.notFound, 404)\n        XCTAssertEqual(HTTPStatusCode.methodNotAllowed, 405)\n        XCTAssertEqual(HTTPStatusCode.notAcceptable, 406)\n        XCTAssertEqual(HTTPStatusCode.proxyAuthenticationRequired, 407)\n        XCTAssertEqual(HTTPStatusCode.requestTimeout, 408)\n        XCTAssertEqual(HTTPStatusCode.conflict, 409)\n        XCTAssertEqual(HTTPStatusCode.gone, 410)\n        XCTAssertEqual(HTTPStatusCode.lengthRequired, 411)\n        XCTAssertEqual(HTTPStatusCode.preconditionFailed, 412)\n        XCTAssertEqual(HTTPStatusCode.payloadTooLarge, 413)\n        XCTAssertEqual(HTTPStatusCode.uriTooLong, 414)\n        XCTAssertEqual(HTTPStatusCode.unsupportedMediaType, 415)\n        XCTAssertEqual(HTTPStatusCode.rangeNotSatisfiable, 416)\n        XCTAssertEqual(HTTPStatusCode.expectationFailed, 417)\n        XCTAssertEqual(HTTPStatusCode.imATeapot, 418)\n        XCTAssertEqual(HTTPStatusCode.misdirectedRequest, 421)\n        XCTAssertEqual(HTTPStatusCode.unprocessableEntity, 422)\n        XCTAssertEqual(HTTPStatusCode.locked, 423)\n        XCTAssertEqual(HTTPStatusCode.failedDependency, 424)\n        XCTAssertEqual(HTTPStatusCode.upgradeRequired, 426)\n        XCTAssertEqual(HTTPStatusCode.preconditionRequired, 428)\n        XCTAssertEqual(HTTPStatusCode.tooManyRequests, 429)\n        XCTAssertEqual(HTTPStatusCode.requestHeaderFieldsTooLarge, 431)\n        XCTAssertEqual(HTTPStatusCode.iisLoginTimeout, 440)\n        XCTAssertEqual(HTTPStatusCode.nginxNoResponse, 444)\n        XCTAssertEqual(HTTPStatusCode.iisRetryWith, 449)\n        XCTAssertEqual(HTTPStatusCode.blockedByWindowsParentalControls, 450)\n        XCTAssertEqual(HTTPStatusCode.unavailableForLegalReasons, 451)\n        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateError, 495)\n        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateRequired, 496)\n        XCTAssertEqual(HTTPStatusCode.nginxHTTPToHTTPS, 497)\n        XCTAssertEqual(HTTPStatusCode.tokenExpired, 498)\n        XCTAssertEqual(HTTPStatusCode.nginxClientClosedRequest, 499)\n        XCTAssertEqual(HTTPStatusCode.internalServerError, 500)\n        XCTAssertEqual(HTTPStatusCode.notImplemented, 501)\n        XCTAssertEqual(HTTPStatusCode.badGateway, 502)\n        XCTAssertEqual(HTTPStatusCode.serviceUnavailable, 503)\n        XCTAssertEqual(HTTPStatusCode.gatewayTimeout, 504)\n        XCTAssertEqual(HTTPStatusCode.httpVersionNotSupported, 505)\n        XCTAssertEqual(HTTPStatusCode.variantAlsoNegotiates, 506)\n        XCTAssertEqual(HTTPStatusCode.insufficientStorage, 507)\n        XCTAssertEqual(HTTPStatusCode.loopDetected, 508)\n        XCTAssertEqual(HTTPStatusCode.bandwidthLimitExceeded, 509)\n        XCTAssertEqual(HTTPStatusCode.notExtended, 510)\n        XCTAssertEqual(HTTPStatusCode.networkAuthenticationRequired, 511)\n        XCTAssertEqual(HTTPStatusCode.siteIsFrozen, 530)\n        XCTAssertEqual(HTTPStatusCode.networkConnectTimeoutError, 599)\n        \n        XCTAssertEqual(HTTPURLResponse(url: URL(string: \"http://www.google.com\")!, statusCode: .ok, httpVersion: nil, headerFields: nil)!.statusCodeValue, .ok)\n    }\n    \n    func testVersion3_3() {\n        XCTAssertEqual(HTTPStatusCode.continue, 100)\n        XCTAssertEqual(HTTPStatusCode.switchingProtocols, 101)\n        XCTAssertEqual(HTTPStatusCode.processing, 102)\n        XCTAssertEqual(HTTPStatusCode.earlyHints, 103)\n        XCTAssertEqual(HTTPStatusCode.ok, 200)\n        XCTAssertEqual(HTTPStatusCode.created, 201)\n        XCTAssertEqual(HTTPStatusCode.accepted, 202)\n        XCTAssertEqual(HTTPStatusCode.nonAuthoritativeInformation, 203)\n        XCTAssertEqual(HTTPStatusCode.noContent, 204)\n        XCTAssertEqual(HTTPStatusCode.resetContent, 205)\n        XCTAssertEqual(HTTPStatusCode.partialContent, 206)\n        XCTAssertEqual(HTTPStatusCode.multiStatus, 207)\n        XCTAssertEqual(HTTPStatusCode.alreadyReported, 208)\n        XCTAssertEqual(HTTPStatusCode.imUsed, 226)\n        XCTAssertEqual(HTTPStatusCode.multipleChoices, 300)\n        XCTAssertEqual(HTTPStatusCode.movedPermanently, 301)\n        XCTAssertEqual(HTTPStatusCode.found, 302)\n        XCTAssertEqual(HTTPStatusCode.seeOther, 303)\n        XCTAssertEqual(HTTPStatusCode.notModified, 304)\n        XCTAssertEqual(HTTPStatusCode.useProxy, 305)\n        XCTAssertEqual(HTTPStatusCode.temporaryRedirect, 307)\n        XCTAssertEqual(HTTPStatusCode.permanentRedirect, 308)\n        XCTAssertEqual(HTTPStatusCode.badRequest, 400)\n        XCTAssertEqual(HTTPStatusCode.unauthorized, 401)\n        XCTAssertEqual(HTTPStatusCode.paymentRequired, 402)\n        XCTAssertEqual(HTTPStatusCode.forbidden, 403)\n        XCTAssertEqual(HTTPStatusCode.notFound, 404)\n        XCTAssertEqual(HTTPStatusCode.methodNotAllowed, 405)\n        XCTAssertEqual(HTTPStatusCode.notAcceptable, 406)\n        XCTAssertEqual(HTTPStatusCode.proxyAuthenticationRequired, 407)\n        XCTAssertEqual(HTTPStatusCode.requestTimeout, 408)\n        XCTAssertEqual(HTTPStatusCode.conflict, 409)\n        XCTAssertEqual(HTTPStatusCode.gone, 410)\n        XCTAssertEqual(HTTPStatusCode.lengthRequired, 411)\n        XCTAssertEqual(HTTPStatusCode.preconditionFailed, 412)\n        XCTAssertEqual(HTTPStatusCode.payloadTooLarge, 413)\n        XCTAssertEqual(HTTPStatusCode.uriTooLong, 414)\n        XCTAssertEqual(HTTPStatusCode.unsupportedMediaType, 415)\n        XCTAssertEqual(HTTPStatusCode.rangeNotSatisfiable, 416)\n        XCTAssertEqual(HTTPStatusCode.expectationFailed, 417)\n        XCTAssertEqual(HTTPStatusCode.imATeapot, 418)\n        XCTAssertEqual(HTTPStatusCode.misdirectedRequest, 421)\n        XCTAssertEqual(HTTPStatusCode.unprocessableEntity, 422)\n        XCTAssertEqual(HTTPStatusCode.locked, 423)\n        XCTAssertEqual(HTTPStatusCode.failedDependency, 424)\n        XCTAssertEqual(HTTPStatusCode.tooEarly, 425)\n        XCTAssertEqual(HTTPStatusCode.upgradeRequired, 426)\n        XCTAssertEqual(HTTPStatusCode.preconditionRequired, 428)\n        XCTAssertEqual(HTTPStatusCode.tooManyRequests, 429)\n        XCTAssertEqual(HTTPStatusCode.requestHeaderFieldsTooLarge, 431)\n        XCTAssertEqual(HTTPStatusCode.iisLoginTimeout, 440)\n        XCTAssertEqual(HTTPStatusCode.nginxNoResponse, 444)\n        XCTAssertEqual(HTTPStatusCode.iisRetryWith, 449)\n        XCTAssertEqual(HTTPStatusCode.blockedByWindowsParentalControls, 450)\n        XCTAssertEqual(HTTPStatusCode.unavailableForLegalReasons, 451)\n        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateError, 495)\n        XCTAssertEqual(HTTPStatusCode.nginxSSLCertificateRequired, 496)\n        XCTAssertEqual(HTTPStatusCode.nginxHTTPToHTTPS, 497)\n        XCTAssertEqual(HTTPStatusCode.tokenExpired, 498)\n        XCTAssertEqual(HTTPStatusCode.nginxClientClosedRequest, 499)\n        XCTAssertEqual(HTTPStatusCode.internalServerError, 500)\n        XCTAssertEqual(HTTPStatusCode.notImplemented, 501)\n        XCTAssertEqual(HTTPStatusCode.badGateway, 502)\n        XCTAssertEqual(HTTPStatusCode.serviceUnavailable, 503)\n        XCTAssertEqual(HTTPStatusCode.gatewayTimeout, 504)\n        XCTAssertEqual(HTTPStatusCode.httpVersionNotSupported, 505)\n        XCTAssertEqual(HTTPStatusCode.variantAlsoNegotiates, 506)\n        XCTAssertEqual(HTTPStatusCode.insufficientStorage, 507)\n        XCTAssertEqual(HTTPStatusCode.loopDetected, 508)\n        XCTAssertEqual(HTTPStatusCode.bandwidthLimitExceeded, 509)\n        XCTAssertEqual(HTTPStatusCode.notExtended, 510)\n        XCTAssertEqual(HTTPStatusCode.networkAuthenticationRequired, 511)\n        XCTAssertEqual(HTTPStatusCode.siteIsFrozen, 530)\n        XCTAssertEqual(HTTPStatusCode.networkConnectTimeoutError, 599)\n        \n        XCTAssertEqual(HTTPURLResponse(url: URL(string: \"http://www.google.com\")!, statusCode: .ok, httpVersion: nil, headerFields: nil)!.statusCodeValue, .ok)\n    }\n}\n    \n#endif\n"
  }
]