mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			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
 | |
| }
 |