Tusker/TuskerTests/ArrayUniqueTests.swift

52 lines
1.2 KiB
Swift

//
// ArrayUniqueTests.swift
// TuskerTests
//
// Created by Shadowfacts on 1/1/23.
// Copyright © 2023 Shadowfacts. All rights reserved.
//
import XCTest
@testable import Tusker
final class ArrayUniqueTests: XCTestCase {
func testUniquesBy() {
let a = Test(string: "test")
let b = Test(string: "test")
XCTAssertNotEqual(a.id, b.id)
XCTAssertNotEqual(a.hashValue, b.hashValue)
XCTAssertEqual([a, b].uniques(by: \.string), [a])
}
func testUniquesOrder() {
let a = Test(string: "a")
let b = Test(string: "b")
XCTAssertEqual([a, b].uniques(), [a, b])
}
class Test: NSObject {
let id = UUID()
let string: String
init(string: String) {
self.string = string
}
override func isEqual(_ object: Any?) -> Bool {
guard let other = object as? Self else {
return false
}
return id == other.id && string == other.string
}
override var hash: Int {
var hasher = Hasher()
hasher.combine(id)
hasher.combine(string)
return hasher.finalize()
}
}
}