@@ -187,6 +187,51 @@ public void required_spec105_mustSignalOnCompleteWhenFiniteStreamTerminates_shou
187
187
}, "Expected end-of-stream but got element [3]" );
188
188
}
189
189
190
+ @ Test
191
+ public void optional_spec105_emptyStreamMustTerminateBySignallingOnComplete_shouldNotAllowEagerOnComplete () throws Throwable {
192
+ final Publisher <Integer > illegalEmptyEagerOnCompletePublisher = new Publisher <Integer >() {
193
+ @ Override public void subscribe (final Subscriber <? super Integer > s ) {
194
+ s .onComplete ();
195
+ }
196
+ };
197
+
198
+ requireTestFailure (new ThrowingRunnable () {
199
+ @ Override public void run () throws Throwable {
200
+ PublisherVerification <Integer > verification = new PublisherVerification <Integer >(newTestEnvironment (), GC_TIMEOUT_MILLIS ) {
201
+ @ Override public Publisher <Integer > createPublisher (long elements ) {
202
+ return illegalEmptyEagerOnCompletePublisher ;
203
+ }
204
+
205
+ @ Override public long maxElementsFromPublisher () {
206
+ return 0 ;
207
+ }
208
+
209
+ @ Override public Publisher <Integer > createErrorStatePublisher () {
210
+ return null ;
211
+ }
212
+ };
213
+
214
+ verification .optional_spec105_emptyStreamMustTerminateBySignallingOnComplete ();
215
+ }
216
+ }, "Subscriber::onComplete() called before Subscriber::onSubscribe" );
217
+ }
218
+
219
+ @ Test
220
+ public void optional_spec105_emptyStreamMustTerminateBySignallingOnComplete_shouldBeSkippedForNonEmptyPublisher () throws Throwable {
221
+ final Publisher <Integer > failingPublisher = new Publisher <Integer >() {
222
+ @ Override public void subscribe (final Subscriber <? super Integer > s ) {
223
+ throw new TestException ();
224
+ }
225
+ };
226
+
227
+ requireTestSkip (new ThrowingRunnable () {
228
+ @ Override
229
+ public void run () throws Throwable {
230
+ customPublisherVerification (failingPublisher ).optional_spec105_emptyStreamMustTerminateBySignallingOnComplete ();
231
+ }
232
+ }, "This test is specific for 0-lenght streams" );
233
+ }
234
+
190
235
@ Test
191
236
public void required_spec107_mustNotEmitFurtherSignalsOnceOnCompleteHasBeenSignalled_shouldFailForNotCompletingPublisher () throws Throwable {
192
237
requireTestFailure (new ThrowingRunnable () {
0 commit comments