Files
Ents-mirror/Example/Tests/Tests.swift

131 lines
4.2 KiB
Swift

import UIKit
import XCTest
import Ents
class Tests: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
// MARK: - Map
func testConcurrentMap() {
let base = Array((0..<10))
let transform = { (item: Int) -> Int in item * 2 }
let array = base.concurrentMap(transform)
let expected = base.map(transform)
XCTAssertEqual(array, expected)
}
@available(iOS 10.0, *)
func testConcurrentMapPerformance() {
let base = Array((0..<100_000))
let transform = { (item: Int) -> Int in item * 2 }
self.measure {
let _ = base.concurrentMap(qos: .userInteractive,
lock: .spinLock,
transform)
}
}
func testMapPerformance() {
let base = Array((0..<100_000))
let transform = { (item: Int) -> Int in item * 2 }
self.measure {
let _ = base.map(transform)
}
}
// MARK: - Flat Map
func testConcurrentFlatMap() {
let base = Array((0..<10)).map({ Array(repeating: $0, count: $0) })
let transform = { (item: [Int]) -> [Int] in item.map({$0 * 2}) }
let array = base.concurrentFlatMap(transform)
let expected = base.flatMap(transform)
XCTAssertEqual(array, expected)
}
func testConcurrentFlatMapPerformance() {
let base = Array((0..<1_000)).map({ Array(repeating: $0, count: $0) })
let transform = { (item: [Int]) -> [Int] in item.map({$0 * 2}) }
self.measure {
let _ = base.concurrentFlatMap(qos: .userInteractive,
lock: .spinLock,
transform)
}
}
func testFlatMapPerformance() {
let base = Array((0..<1_000)).map({ Array(repeating: $0, count: $0) })
let transform = { (item: [Int]) -> [Int] in item.map({$0 * 2}) }
self.measure {
let _ = base.flatMap(transform)
}
}
// MARK: - Compact Map
func testConcurrentCompactMap() {
let base = Array((0..<10))
let transform = { (item: Int) -> Int? in return item % 2 == 0 ? item : nil }
let array = base.concurrentCompactMap(transform)
let expected = base.compactMap(transform)
XCTAssertEqual(array, expected)
}
func testConcurrentCompactMapPerformance() {
let base = Array((0..<100_000))
let transform = { (item: Int) -> Int? in return item % 2 == 0 ? item : nil }
self.measure {
let _ = base.concurrentCompactMap(qos: .userInteractive,
lock: .spinLock,
transform)
}
}
func testCompactMapPerformance() {
let base = Array((0..<100_000))
let transform = { (item: Int) -> Int? in return item % 2 == 0 ? item : nil }
self.measure {
let _ = base.compactMap(transform)
}
}
// MARK: - Filter
func testConcurrentFilter() {
let base = Array((0..<10))
let isIncluded = { (item: Int) -> Bool in return item % 2 == 0 }
let array = base.concurrentFilter(isIncluded)
let expected = base.filter(isIncluded)
XCTAssertEqual(array, expected)
}
func testConcurrentFilterPerformance() {
let base = Array((0..<100_000))
let isIncluded = { (item: Int) -> Bool in return item % 2 == 0 }
self.measure {
let _ = base.concurrentFilter(qos: .userInteractive,
lock: .spinLock,
isIncluded)
}
}
func testFilterPerformance() {
let base = Array((0..<100_000))
let isIncluded = { (item: Int) -> Bool in return item % 2 == 0 }
self.measure {
let _ = base.filter(isIncluded)
}
}
}