@@ -242,6 +242,12 @@ class SortedArrayTests: XCTestCase {
242242 XCTAssertEqual ( index, 2 )
243243 }
244244
245+ func testFirstWhereFindsFirstMatchingElement( ) {
246+ let sut = SortedArray ( unsorted: [ 4 , 3 , 2 , 1 ] )
247+ let last = sut. first ( where: { $0 >= 2 } )
248+ XCTAssertEqual ( last, 2 )
249+ }
250+
245251 func testLastIndexOfFindsElementInMiddle( ) {
246252 let sut = SortedArray ( unsorted: [ " a " , " z " , " r " , " k " ] )
247253 let index = sut. lastIndex ( of: " k " )
@@ -350,6 +356,12 @@ class SortedArrayTests: XCTestCase {
350356 XCTAssertEqual ( index, 9 )
351357 }
352358
359+ func testLastWhereFindsLastMatchingElement( ) {
360+ let sut = SortedArray ( unsorted: [ 4 , 3 , 2 , 1 ] )
361+ let last = sut. last ( where: { $0 <= 3 } )
362+ XCTAssertEqual ( last, 3 )
363+ }
364+
353365 func testsContains( ) {
354366 let sut = SortedArray ( unsorted: " Lorem ipsum " )
355367 XCTAssertTrue ( sut. contains ( " " ) )
@@ -532,6 +544,7 @@ extension SortedArrayTests {
532544 ( " testFirstIndexWhereFindsFirstIndexOfDuplicateElements3 " , testFirstIndexWhereFindsFirstIndexOfDuplicateElements3) ,
533545 ( " testFirstIndexWhereFindsFirstIndexOfDuplicateElements4 " , testFirstIndexWhereFindsFirstIndexOfDuplicateElements4) ,
534546 ( " testFirstIndexWhereFindsFirstIndexOfDuplicateElements5 " , testFirstIndexWhereFindsFirstIndexOfDuplicateElements5) ,
547+ ( " testFirstWhereFindsFirstMatchingElement " , testFirstWhereFindsFirstMatchingElement) ,
535548 ( " testLastIndexOfFindsElementInMiddle " , testLastIndexOfFindsElementInMiddle) ,
536549 ( " testLastIndexOfFindsFirstElement " , testLastIndexOfFindsFirstElement) ,
537550 ( " testLastIndexOfFindsLastElement " , testLastIndexOfFindsLastElement) ,
@@ -550,6 +563,7 @@ extension SortedArrayTests {
550563 ( " testLastIndexWhereFindsLastIndexOfDuplicateElements1 " , testLastIndexWhereFindsLastIndexOfDuplicateElements1) ,
551564 ( " testLastIndexWhereFindsLastIndexOfDuplicateElements2 " , testLastIndexWhereFindsLastIndexOfDuplicateElements2) ,
552565 ( " testLastIndexWhereFindsLastIndexOfDuplicateElements3 " , testLastIndexWhereFindsLastIndexOfDuplicateElements3) ,
566+ ( " testLastWhereFindsLastMatchingElement " , testLastWhereFindsLastMatchingElement) ,
553567 ( " testsContains " , testsContains) ,
554568 ( " testMin " , testMin) ,
555569 ( " testMax " , testMax) ,
@@ -575,3 +589,15 @@ extension SortedArrayTests {
575589 ]
576590 }
577591}
592+
593+ struct Pair < A, B> {
594+ let first : A
595+ let second : B
596+
597+ init ( _ first: A , _ second: B ) {
598+ self . first = first
599+ self . second = second
600+ }
601+ }
602+
603+ extension Pair : Equatable where A: Equatable , B: Equatable { }
0 commit comments