| OLD | NEW |
| 1 // | 1 // |
| 2 // FavIcon | 2 // FavIcon |
| 3 // Copyright © 2016 Leon Breedt | 3 // Copyright © 2016 Leon Breedt |
| 4 // | 4 // |
| 5 // Licensed under the Apache License, Version 2.0 (the "License"); | 5 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 // you may not use this file except in compliance with the License. | 6 // you may not use this file except in compliance with the License. |
| 7 // You may obtain a copy of the License at | 7 // You may obtain a copy of the License at |
| 8 // | 8 // |
| 9 // http://www.apache.org/licenses/LICENSE-2.0 | 9 // http://www.apache.org/licenses/LICENSE-2.0 |
| 10 // | 10 // |
| 11 // Unless required by applicable law or agreed to in writing, software | 11 // Unless required by applicable law or agreed to in writing, software |
| 12 // distributed under the License is distributed on an "AS IS" BASIS, | 12 // distributed under the License is distributed on an "AS IS" BASIS, |
| 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 // See the License for the specific language governing permissions and | 14 // See the License for the specific language governing permissions and |
| 15 // limitations under the License. | 15 // limitations under the License. |
| 16 // | 16 // |
| 17 | 17 |
| 18 // swiftlint:disable sorted_imports |
| 19 |
| 18 import XCTest | 20 import XCTest |
| 19 @testable import FavIcon | 21 @testable import FavIcon |
| 20 | 22 |
| 21 #if os(iOS) | 23 #if os(iOS) |
| 22 import UIKit | 24 import UIKit |
| 23 #elseif os(OSX) | 25 #elseif os(OSX) |
| 24 import Cocoa | 26 import Cocoa |
| 25 #endif | 27 #endif |
| 26 | 28 |
| 27 // swiftlint:disable function_body_length | 29 // swiftlint:disable function_body_length |
| 28 // swiftlint:disable line_length | |
| 29 | 30 |
| 30 class FavIconTests: XCTestCase { | 31 class FavIconTests: XCTestCase { |
| 31 func testScan() { | 32 func testScan() { |
| 32 var actualIcons: [DetectedIcon] = [] | 33 var actualIcons: [DetectedIcon] = [] |
| 33 | 34 |
| 34 performWebRequest(name: "scan") { requestCompleted in | 35 performWebRequest(name: "scan") { requestCompleted in |
| 35 do { | 36 do { |
| 36 try FavIcon.scan("https://apple.com") { icons, meta in | 37 try FavIcon.scan("https://apple.com") { icons, _ in |
| 37 actualIcons = icons | 38 actualIcons = icons |
| 38 requestCompleted() | 39 requestCompleted() |
| 39 } | 40 } |
| 40 } catch let error { | 41 } catch let error { |
| 41 XCTFail("failed to detect icons: \(error)") | 42 XCTFail("failed to detect icons: \(error)") |
| 42 } | 43 } |
| 43 } | 44 } |
| 44 | 45 |
| 45 XCTAssertEqual(1, actualIcons.count) | 46 XCTAssertEqual(1, actualIcons.count) |
| 46 XCTAssertEqual(URL(string: "https://www.apple.com/favicon.ico")!, actual
Icons[0].url) | 47 XCTAssertEqual(URL(string: "https://www.apple.com/favicon.ico")!, actual
Icons[0].url) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 59 XCTFail("failed to download icons: \(error)") | 60 XCTFail("failed to download icons: \(error)") |
| 60 } | 61 } |
| 61 } | 62 } |
| 62 | 63 |
| 63 XCTAssertEqual(1, actualResults.count) | 64 XCTAssertEqual(1, actualResults.count) |
| 64 | 65 |
| 65 switch actualResults[0] { | 66 switch actualResults[0] { |
| 66 case .success(let image): | 67 case .success(let image): |
| 67 XCTAssertEqual(32, image.size.width) | 68 XCTAssertEqual(32, image.size.width) |
| 68 XCTAssertEqual(32, image.size.height) | 69 XCTAssertEqual(32, image.size.height) |
| 69 break | |
| 70 case .failure(let error): | 70 case .failure(let error): |
| 71 XCTFail("unexpected error returned for download: \(error)") | 71 XCTFail("unexpected error returned for download: \(error)") |
| 72 break | |
| 73 } | 72 } |
| 74 } | 73 } |
| 75 | 74 |
| 76 func testChooseIcon() { | 75 func testChooseIcon() { |
| 77 let mixedIcons = [ | 76 let mixedIcons = [ |
| 78 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .shortcut, width: 32, height: 32), | 77 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .shortcut, width: 32, height: 32), |
| 79 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .classic, width: 64, height: 64), | 78 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .classic, width: 64, height: 64), |
| 80 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .appleIOSWebClip, width: 64, height: 64), | 79 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .appleIOSWebClip, width: 64, height: 64), |
| 81 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .appleOSXSafariTab, width: 144, height: 144), | 80 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .appleOSXSafariTab, width: 144, height: 144), |
| 82 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .classic) | 81 DetectedIcon(url: URL(string: "https://google.com/favicon.ico")!, ty
pe: .classic) |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 private extension XCTestCase { | 306 private extension XCTestCase { |
| 308 func performWebRequest(name: String, timeout: TimeInterval = 50000.0, callba
ck: (@escaping () -> Void) -> Void) { | 307 func performWebRequest(name: String, timeout: TimeInterval = 50000.0, callba
ck: (@escaping () -> Void) -> Void) { |
| 309 FavIcon.urlSessionProvider = { URLSession.shared } | 308 FavIcon.urlSessionProvider = { URLSession.shared } |
| 310 let expectation = self.expectation(description: "web request - \(name)") | 309 let expectation = self.expectation(description: "web request - \(name)") |
| 311 callback(expectation.fulfill) | 310 callback(expectation.fulfill) |
| 312 waitForExpectations(timeout: timeout, handler: nil) | 311 waitForExpectations(timeout: timeout, handler: nil) |
| 313 } | 312 } |
| 314 } | 313 } |
| 315 | 314 |
| 316 // swiftlint:enable function_body_length | 315 // swiftlint:enable function_body_length |
| 317 // swiftlint:enable line_length | |
| OLD | NEW |