Skip to content

Commit a97a69b

Browse files
committed
Test error messages against regex
1 parent 1735d0d commit a97a69b

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed

src/test/java/io/reactivex/rxjava3/observers/TestObserverTest.java

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ static void assertThrowsWithMessage(String message, Class<? extends Throwable> c
4444
assertEquals(message, assertThrows(clazz, run).getMessage());
4545
}
4646

47+
static void assertThrowsWithMessageMatchRegex(String regex, Class<? extends Throwable> clazz, ThrowingRunnable run) {
48+
assertTrue(assertThrows(clazz, run).getMessage().matches(regex));
49+
}
50+
51+
private static final String ASSERT_MESSAGE_REGEX = "\nexpected: (.*)\n\\s*got: (.*)";
52+
4753
@Test
4854
public void assertTestObserver() {
4955
Flowable<Integer> oi = Flowable.fromIterable(Arrays.asList(1, 2));
@@ -1008,6 +1014,105 @@ public void assertValueAtIndexNoMatch() {
10081014
});
10091015
}
10101016

1017+
@Test
1018+
public void assertValueAtIndexThrowsMessageMatchRegex() {
1019+
assertThrowsWithMessageMatchRegex(ASSERT_MESSAGE_REGEX, AssertionError.class, () -> {
1020+
TestObserver<String> to = new TestObserver<>();
1021+
1022+
Observable.just("a", "b", "c").subscribe(to);
1023+
1024+
to.assertValueAt(2, "b");
1025+
});
1026+
}
1027+
1028+
@Test
1029+
public void assertValuesCountNoMatch() {
1030+
assertThrowsWithMessage("\nexpected: 2 [a, b]\ngot: 3 [a, b, c]; Value count differs (latch = 0, values = 3, errors = 0, completions = 1)", AssertionError.class, () -> {
1031+
TestObserver<String> to = new TestObserver<>();
1032+
1033+
Observable.just("a", "b", "c").subscribe(to);
1034+
1035+
to.assertValues("a", "b");
1036+
});
1037+
}
1038+
1039+
@Test
1040+
public void assertValuesCountThrowsMessageMatchRegex() {
1041+
assertThrowsWithMessageMatchRegex(ASSERT_MESSAGE_REGEX, AssertionError.class, () -> {
1042+
TestObserver<String> to = new TestObserver<>();
1043+
1044+
Observable.just("a", "b", "c").subscribe(to);
1045+
1046+
to.assertValues("a", "b");
1047+
});
1048+
}
1049+
1050+
@Test
1051+
public void assertValuesNoMatch() {
1052+
assertThrowsWithMessage("\nexpected: d (class: String)\ngot: c (class: String); Value at position 2 differ (latch = 0, values = 3, errors = 0, completions = 1)", AssertionError.class, () -> {
1053+
TestObserver<String> to = new TestObserver<>();
1054+
1055+
Observable.just("a", "b", "c").subscribe(to);
1056+
1057+
to.assertValues("a", "b", "d");
1058+
});
1059+
}
1060+
1061+
@Test
1062+
public void assertValuesThrowsMessageMatchRegex() {
1063+
assertThrowsWithMessageMatchRegex(ASSERT_MESSAGE_REGEX, AssertionError.class, () -> {
1064+
TestObserver<String> to = new TestObserver<>();
1065+
1066+
Observable.just("a", "b", "c").subscribe(to);
1067+
1068+
to.assertValues("a", "b", "d");
1069+
});
1070+
}
1071+
1072+
@Test
1073+
public void assertValueCountNoMatch() {
1074+
assertThrowsWithMessage("\nexpected: 2\ngot: 3; Value counts differ (latch = 0, values = 3, errors = 0, completions = 1)", AssertionError.class, () -> {
1075+
TestObserver<String> to = new TestObserver<>();
1076+
1077+
Observable.just("a", "b", "c").subscribe(to);
1078+
1079+
to.assertValueCount(2);
1080+
});
1081+
}
1082+
1083+
@Test
1084+
public void assertValueCountThrowsMessageMatchRegex() {
1085+
assertThrowsWithMessageMatchRegex(ASSERT_MESSAGE_REGEX, AssertionError.class, () -> {
1086+
TestObserver<String> to = new TestObserver<>();
1087+
1088+
Observable.just("a", "b", "c").subscribe(to);
1089+
1090+
to.assertValueCount(2);
1091+
});
1092+
}
1093+
1094+
@Test
1095+
public void assertValueSequenceNoMatch() {
1096+
assertThrowsWithMessage("\nexpected: d (class: String)\ngot: c (class: String); Value at position 2 differ (latch = 0, values = 3, errors = 0, completions = 1)", AssertionError.class, () -> {
1097+
TestObserver<String> to = new TestObserver<>();
1098+
1099+
Observable.just("a", "b", "c").subscribe(to);
1100+
1101+
to.assertValueSequence(Arrays.asList("a", "b", "d"));
1102+
});
1103+
}
1104+
1105+
@Test
1106+
public void assertValueSequenceThrowsMessageMatchRegex() {
1107+
assertThrowsWithMessageMatchRegex(ASSERT_MESSAGE_REGEX, AssertionError.class, () -> {
1108+
TestObserver<String> to = new TestObserver<>();
1109+
1110+
Observable.just("a", "b", "c").subscribe(to);
1111+
1112+
to.assertValueSequence(Arrays.asList("a", "b", "d"));
1113+
});
1114+
}
1115+
10111116
@Test
10121117
public void assertValueAtIndexInvalidIndex() {
10131118
assertThrowsWithMessage("Index 2 is out of range [0, 2) (latch = 0, values = 2, errors = 0, completions = 1)", AssertionError.class, () -> {

0 commit comments

Comments
 (0)