@@ -1526,6 +1526,50 @@ public static <R, T0, T1> Observable<R> zip(Observable<T0> w0, Observable<T1> w1
1526
1526
return _create (OperationZip .zip (w0 , w1 , reduceFunction ));
1527
1527
}
1528
1528
1529
+
1530
+ /**
1531
+ * Determines whether two sequences are equal by comparing the elements pairwise.
1532
+ *
1533
+ * @param first observable to compare
1534
+ * @param second observable to compare
1535
+ * @param <T> type of sequence
1536
+ * @return sequence of booleans, true if two sequences are equal by comparing the elements pairwise; otherwise, false.
1537
+ */
1538
+ public static <T > Observable <Boolean > sequenceEqual (Observable <T > first , Observable <T > second ) {
1539
+ return sequenceEqual (first , second , new Func2 <T , T , Boolean >() {
1540
+ @ Override
1541
+ public Boolean call (T first , T second ) {
1542
+ return first .equals (second );
1543
+ }
1544
+ });
1545
+ }
1546
+
1547
+ /**
1548
+ * Determines whether two sequences are equal by comparing the elements pairwise using a specified equality function.
1549
+ *
1550
+ * @param first observable sequence to compare
1551
+ * @param second observable sequence to compare
1552
+ * @param equality a function used to compare elements of both sequences
1553
+ * @param <T> type of sequence
1554
+ * @return sequence of booleans, true if two sequences are equal by comparing the elements pairwise; otherwise, false.
1555
+ */
1556
+ private static <T > Observable <Boolean > sequenceEqual (Observable <T > first , Observable <T > second , Func2 <T , T , Boolean > equality ) {
1557
+ return zip (first , second , equality );
1558
+ }
1559
+
1560
+ /**
1561
+ * Determines whether two sequences are equal by comparing the elements pairwise using a specified equality function.
1562
+ *
1563
+ * @param first observable sequence to compare
1564
+ * @param second observable sequence to compare
1565
+ * @param equality a function used to compare elements of both sequences
1566
+ * @param <T> type of sequence
1567
+ * @return sequence of booleans, true if two sequences are equal by comparing the elements pairwise; otherwise, false.
1568
+ */
1569
+ private static <T > Observable <Boolean > sequenceEqual (Observable <T > first , Observable <T > second , Object equality ) {
1570
+ return zip (first , second , equality );
1571
+ }
1572
+
1529
1573
/**
1530
1574
* Returns an Observable that applies a function of your choosing to the combination of items
1531
1575
* emitted, in sequence, by two other Observables, with the results of this function becoming the
@@ -2360,5 +2404,18 @@ public Integer call(Integer t1, Integer t2) {
2360
2404
verify (w ).onNext (60 );
2361
2405
}
2362
2406
2407
+ @ Test
2408
+ public void testSequenceEqual () {
2409
+ Observable <Integer > first = toObservable (1 , 2 , 3 );
2410
+ Observable <Integer > second = toObservable (1 , 2 , 4 );
2411
+ @ SuppressWarnings ("unchecked" )
2412
+ Observer <Boolean > result = mock (Observer .class );
2413
+ sequenceEqual (first , second ).subscribe (result );
2414
+ verify (result , times (2 )).onNext (true );
2415
+ verify (result , times (1 )).onNext (false );
2416
+ }
2417
+
2418
+
2419
+
2363
2420
}
2364
2421
}
0 commit comments