@@ -1511,6 +1511,50 @@ public static <R, T0, T1> Observable<R> zip(Observable<T0> w0, Observable<T1> w1
1511
1511
return _create (OperationZip .zip (w0 , w1 , reduceFunction ));
1512
1512
}
1513
1513
1514
+
1515
+ /**
1516
+ * Determines whether two sequences are equal by comparing the elements pairwise.
1517
+ *
1518
+ * @param first observable to compare
1519
+ * @param second observable to compare
1520
+ * @param <T> type of sequence
1521
+ * @return sequence of booleans, true if two sequences are equal by comparing the elements pairwise; otherwise, false.
1522
+ */
1523
+ public static <T > Observable <Boolean > sequenceEqual (Observable <T > first , Observable <T > second ) {
1524
+ return sequenceEqual (first , second , new Func2 <T , T , Boolean >() {
1525
+ @ Override
1526
+ public Boolean call (T first , T second ) {
1527
+ return first .equals (second );
1528
+ }
1529
+ });
1530
+ }
1531
+
1532
+ /**
1533
+ * Determines whether two sequences are equal by comparing the elements pairwise using a specified equality function.
1534
+ *
1535
+ * @param first observable sequence to compare
1536
+ * @param second observable sequence to compare
1537
+ * @param equality a function used to compare elements of both sequences
1538
+ * @param <T> type of sequence
1539
+ * @return sequence of booleans, true if two sequences are equal by comparing the elements pairwise; otherwise, false.
1540
+ */
1541
+ private static <T > Observable <Boolean > sequenceEqual (Observable <T > first , Observable <T > second , Func2 <T , T , Boolean > equality ) {
1542
+ return zip (first , second , equality );
1543
+ }
1544
+
1545
+ /**
1546
+ * Determines whether two sequences are equal by comparing the elements pairwise using a specified equality function.
1547
+ *
1548
+ * @param first observable sequence to compare
1549
+ * @param second observable sequence to compare
1550
+ * @param equality a function used to compare elements of both sequences
1551
+ * @param <T> type of sequence
1552
+ * @return sequence of booleans, true if two sequences are equal by comparing the elements pairwise; otherwise, false.
1553
+ */
1554
+ private static <T > Observable <Boolean > sequenceEqual (Observable <T > first , Observable <T > second , Object equality ) {
1555
+ return zip (first , second , equality );
1556
+ }
1557
+
1514
1558
/**
1515
1559
* Returns an Observable that applies a function of your choosing to the combination of items
1516
1560
* emitted, in sequence, by two other Observables, with the results of this function becoming the
@@ -2345,5 +2389,18 @@ public Integer call(Integer t1, Integer t2) {
2345
2389
verify (w ).onNext (60 );
2346
2390
}
2347
2391
2392
+ @ Test
2393
+ public void testSequenceEqual () {
2394
+ Observable <Integer > first = toObservable (1 , 2 , 3 );
2395
+ Observable <Integer > second = toObservable (1 , 2 , 4 );
2396
+ @ SuppressWarnings ("unchecked" )
2397
+ Observer <Boolean > result = mock (Observer .class );
2398
+ sequenceEqual (first , second ).subscribe (result );
2399
+ verify (result , times (2 )).onNext (true );
2400
+ verify (result , times (1 )).onNext (false );
2401
+ }
2402
+
2403
+
2404
+
2348
2405
}
2349
2406
}
0 commit comments