mirror of
https://github.com/lux-tel/session-ios.git
synced 2026-10-30 20:38:32 +00:00
Properly fixed the busted migration issue Updated to the latest version of Quick and Nimble (unit testing libraries) Updated the tests based on the above
90 lines
3.9 KiB
Swift
90 lines
3.9 KiB
Swift
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import Foundation
|
|
|
|
import Quick
|
|
import Nimble
|
|
|
|
@testable import SessionUtilitiesKit
|
|
|
|
class ArrayUtilitiesSpec: QuickSpec {
|
|
override class func spec() {
|
|
// MARK: - an Array
|
|
describe("an Array") {
|
|
// MARK: -- when grouping
|
|
context("when grouping") {
|
|
// MARK: ---- maintains the original array ordering
|
|
it("maintains the original array ordering") {
|
|
let data: [TestType] = [
|
|
TestType(stringValue: "b", intValue: 5),
|
|
TestType(stringValue: "A", intValue: 2),
|
|
TestType(stringValue: "z", intValue: 1),
|
|
TestType(stringValue: "x", intValue: 3),
|
|
TestType(stringValue: "7", intValue: 6),
|
|
TestType(stringValue: "A", intValue: 7),
|
|
TestType(stringValue: "z", intValue: 8),
|
|
TestType(stringValue: "7", intValue: 9),
|
|
TestType(stringValue: "7", intValue: 4),
|
|
TestType(stringValue: "h", intValue: 2),
|
|
TestType(stringValue: "z", intValue: 1),
|
|
TestType(stringValue: "m", intValue: 2)
|
|
]
|
|
|
|
let result1: [String: [TestType]] = data.grouped(by: \.stringValue)
|
|
let result2: [Int: [TestType]] = data.grouped(by: \.intValue)
|
|
|
|
expect(result1).to(equal(
|
|
[
|
|
"b": [TestType(stringValue: "b", intValue: 5)],
|
|
"A": [
|
|
TestType(stringValue: "A", intValue: 2),
|
|
TestType(stringValue: "A", intValue: 7)
|
|
],
|
|
"z": [
|
|
TestType(stringValue: "z", intValue: 1),
|
|
TestType(stringValue: "z", intValue: 8),
|
|
TestType(stringValue: "z", intValue: 1)
|
|
],
|
|
"x": [TestType(stringValue: "x", intValue: 3)],
|
|
"7": [
|
|
TestType(stringValue: "7", intValue: 6),
|
|
TestType(stringValue: "7", intValue: 9),
|
|
TestType(stringValue: "7", intValue: 4)
|
|
],
|
|
"h": [TestType(stringValue: "h", intValue: 2)],
|
|
"m": [TestType(stringValue: "m", intValue: 2)]
|
|
]
|
|
))
|
|
expect(result2).to(equal(
|
|
[
|
|
1: [
|
|
TestType(stringValue: "z", intValue: 1),
|
|
TestType(stringValue: "z", intValue: 1),
|
|
],
|
|
2: [
|
|
TestType(stringValue: "A", intValue: 2),
|
|
TestType(stringValue: "h", intValue: 2),
|
|
TestType(stringValue: "m", intValue: 2)
|
|
],
|
|
3: [TestType(stringValue: "x", intValue: 3)],
|
|
4: [TestType(stringValue: "7", intValue: 4)],
|
|
5: [TestType(stringValue: "b", intValue: 5)],
|
|
6: [TestType(stringValue: "7", intValue: 6)],
|
|
7: [TestType(stringValue: "A", intValue: 7)],
|
|
9: [TestType(stringValue: "7", intValue: 9)],
|
|
8: [TestType(stringValue: "z", intValue: 8)]
|
|
]
|
|
))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: - Test Types
|
|
|
|
fileprivate struct TestType: Equatable {
|
|
let stringValue: String
|
|
let intValue: Int
|
|
}
|