Skip to content

Commit 01d465e

Browse files
committed
Add allEqual() with test
1 parent 452c594 commit 01d465e

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

Sources/BaseKit/Extensions/Collection+Ext.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,12 @@ public extension RangeReplaceableCollection {
1212
insert(contentsOf: newElements, at: startIndex)
1313
}
1414
}
15+
16+
public extension Collection where Element: Equatable {
17+
func allEqual() -> Bool {
18+
guard let first, count > 1 else {
19+
return true // if no elements, or just 1 then must be equal
20+
}
21+
return !contains(where: { $0 != first })
22+
}
23+
}
Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,29 @@
11
import Foundation
2-
import XCTest
2+
import Testing
33
import BaseKit
44

5-
final class CollectionTests: XCTestCase {
5+
struct CollectionTests {
6+
@Test
67
func testOnly() {
7-
XCTAssertNil([Int]().only)
8-
XCTAssertNil([1, 2].only)
9-
XCTAssertEqual([1].only, 1)
8+
#expect([Int]().only == nil)
9+
#expect([1, 2].only == nil)
10+
#expect([1].only == 1)
1011
}
1112

13+
@Test
1214
func testPrependContents() {
1315
var subject = [1, 2]
1416

1517
subject.prepend(contentsOf: [3, 4])
1618

17-
XCTAssertEqual(subject, [3, 4, 1, 2])
19+
#expect(subject == [3, 4, 1, 2])
20+
}
21+
22+
@Test
23+
func testAllEqual() {
24+
#expect([Int]().allEqual() == true)
25+
#expect([1].allEqual() == true)
26+
#expect([1, 1].allEqual() == true)
27+
#expect([1, 2].allEqual() == false)
1828
}
1929
}

0 commit comments

Comments
 (0)