Skip to content

Commit b9af588

Browse files
authored
1.x: increase Coverage of some classes (#4181)
* 1.x: increase Coverage of some classes * Suppress animalsniffer in unsafe using ó tests
1 parent cf154b1 commit b9af588

12 files changed

+390
-14
lines changed

src/main/java/rx/internal/util/UtilityFunctions.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public T call(T o) {
5959
};
6060
}
6161

62-
private enum AlwaysTrue implements Func1<Object, Boolean> {
62+
enum AlwaysTrue implements Func1<Object, Boolean> {
6363
INSTANCE;
6464

6565
@Override
@@ -68,7 +68,7 @@ public Boolean call(Object o) {
6868
}
6969
}
7070

71-
private enum AlwaysFalse implements Func1<Object, Boolean> {
71+
enum AlwaysFalse implements Func1<Object, Boolean> {
7272
INSTANCE;
7373

7474
@Override

src/main/java/rx/schedulers/ImmediateScheduler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
// Class was part of public API.
2525
public final class ImmediateScheduler extends Scheduler { // NOPMD
2626
private ImmediateScheduler() {
27-
throw new AssertionError();
27+
throw new IllegalStateException("No instances!");
2828
}
2929

3030
@Override

src/main/java/rx/schedulers/NewThreadScheduler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
// Class was part of public API.
2525
public final class NewThreadScheduler extends Scheduler { // NOPMD
2626
private NewThreadScheduler() {
27-
throw new AssertionError();
27+
throw new IllegalStateException("No instances!");
2828
}
2929

3030
@Override

src/main/java/rx/schedulers/Timestamped.java

+1-8
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,7 @@ public boolean equals(Object obj) {
6161
if (timestampMillis != other.timestampMillis) {
6262
return false;
6363
}
64-
if (value == null) {
65-
if (other.value != null) {
66-
return false;
67-
}
68-
} else if (!value.equals(other.value)) {
69-
return false;
70-
}
71-
return true;
64+
return (value == other.value) || (value != null && value.equals(other.value));
7265
}
7366

7467
@Override

src/main/java/rx/schedulers/TrampolineScheduler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
// Class was part of public API.
2525
public final class TrampolineScheduler extends Scheduler { // NOPMD
2626
private TrampolineScheduler() {
27-
throw new AssertionError();
27+
throw new IllegalStateException("No instances!");
2828
}
2929

3030
@Override

src/test/java/rx/internal/operators/DeferredScalarSubscriberTest.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,12 @@ public void call() {
343343
public void emissionRequestRace2() {
344344
Worker w = Schedulers.io().createWorker();
345345
Worker w2 = Schedulers.io().createWorker();
346+
int m = 10000;
347+
if (Runtime.getRuntime().availableProcessors() < 3) {
348+
m = 1000;
349+
}
346350
try {
347-
for (int i = 0; i < 10000; i++) {
351+
for (int i = 0; i < m; i++) {
348352

349353
final TestSubscriber<Integer> ts = TestSubscriber.create(0L);
350354
TestingDeferredScalarSubscriber ds = new TestingDeferredScalarSubscriber(ts);

src/test/java/rx/internal/producers/ProducerObserverArbiterTest.java

+76
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package rx.internal.producers;
1717

1818
import org.junit.*;
19+
import static org.junit.Assert.*;
1920

2021
import rx.*;
2122
import rx.exceptions.TestException;
@@ -38,6 +39,7 @@ public void negativeRequestThrows() {
3839
public void nullProducerAccepted() {
3940
ProducerObserverArbiter<Integer> pa = new ProducerObserverArbiter<Integer>(Subscribers.empty());
4041
pa.setProducer(null);
42+
pa.request(5);
4143
}
4244

4345
public void failedRequestUnlocksEmitting() {
@@ -160,4 +162,78 @@ public void onNext(Integer t) {
160162
}
161163
}
162164

165+
@Test
166+
public void onNextRequests() {
167+
@SuppressWarnings("rawtypes")
168+
final ProducerObserverArbiter[] o = { null };
169+
TestSubscriber<Integer> ts = new TestSubscriber<Integer>() {
170+
@Override
171+
public void onNext(Integer t) {
172+
o[0].request(1);
173+
}
174+
};
175+
ProducerObserverArbiter<Integer> poa = new ProducerObserverArbiter<Integer>(ts);
176+
poa.request(1);
177+
o[0] = poa;
178+
try {
179+
poa.onNext(1);
180+
} catch (TestException ex) {
181+
// expected
182+
}
183+
assertEquals(1, poa.requested);
184+
}
185+
186+
@Test
187+
public void requestIsCapped() {
188+
ProducerObserverArbiter<Integer> poa = new ProducerObserverArbiter<Integer>(new TestSubscriber<Integer>());
189+
190+
poa.request(Long.MAX_VALUE - 1);
191+
poa.request(2);
192+
193+
assertEquals(Long.MAX_VALUE, Long.MAX_VALUE);
194+
}
195+
196+
@Test
197+
public void onNextChangesProducerNull() {
198+
@SuppressWarnings("rawtypes")
199+
final ProducerObserverArbiter[] o = { null };
200+
TestSubscriber<Integer> ts = new TestSubscriber<Integer>() {
201+
@Override
202+
public void onNext(Integer t) {
203+
o[0].setProducer(null);
204+
}
205+
};
206+
ProducerObserverArbiter<Integer> poa = new ProducerObserverArbiter<Integer>(ts);
207+
poa.request(1);
208+
o[0] = poa;
209+
try {
210+
poa.onNext(1);
211+
} catch (TestException ex) {
212+
// expected
213+
}
214+
assertNull(poa.currentProducer);
215+
}
216+
217+
@Test
218+
public void onNextChangesProducerNotNull() {
219+
@SuppressWarnings("rawtypes")
220+
final ProducerObserverArbiter[] o = { null };
221+
TestSubscriber<Integer> ts = new TestSubscriber<Integer>() {
222+
@SuppressWarnings("unchecked")
223+
@Override
224+
public void onNext(Integer t) {
225+
o[0].setProducer(new SingleProducer<Integer>(o[0].child, 2));
226+
}
227+
};
228+
ProducerObserverArbiter<Integer> poa = new ProducerObserverArbiter<Integer>(ts);
229+
poa.request(1);
230+
o[0] = poa;
231+
try {
232+
poa.onNext(1);
233+
} catch (TestException ex) {
234+
// expected
235+
}
236+
assertNotNull(poa.currentProducer);
237+
}
238+
163239
}

src/test/java/rx/internal/producers/ProducersTest.java

+94
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package rx.internal.producers;
1717

18+
import static org.junit.Assert.*;
1819
import static org.mockito.Mockito.*;
1920

2021
import java.util.*;
@@ -25,8 +26,10 @@
2526
import rx.*;
2627
import rx.Observable;
2728
import rx.Observable.*;
29+
import rx.exceptions.MissingBackpressureException;
2830
import rx.Observer;
2931
import rx.functions.*;
32+
import rx.internal.util.unsafe.SpscArrayQueue;
3033
import rx.observers.TestSubscriber;
3134
import rx.schedulers.*;
3235
import rx.subscriptions.SerialSubscription;
@@ -426,4 +429,95 @@ public void onNext(Integer t) {
426429
}
427430
});
428431
}
432+
433+
@Test
434+
public void queuedProducerRequestNegative() {
435+
QueuedProducer<Integer> qp = new QueuedProducer<Integer>(new TestSubscriber<Integer>());
436+
try {
437+
qp.request(-99);
438+
} catch (IllegalArgumentException ex) {
439+
assertEquals("n >= 0 required", ex.getMessage());
440+
}
441+
}
442+
443+
@Test
444+
public void queuedProducerOfferNull() {
445+
TestSubscriber<Integer> ts = TestSubscriber.create();
446+
QueuedProducer<Integer> qp = new QueuedProducer<Integer>(ts);
447+
qp.offer(null);
448+
449+
qp.request(1);
450+
451+
ts.assertValue(null);
452+
}
453+
454+
@Test
455+
public void queuedProducerFull() {
456+
TestSubscriber<Integer> ts = TestSubscriber.create();
457+
QueuedProducer<Integer> qp = new QueuedProducer<Integer>(ts, new SpscArrayQueue<Object>(1));
458+
assertTrue(qp.offer(1));
459+
assertFalse(qp.offer(2));
460+
461+
qp.request(1);
462+
463+
ts.assertValue(1);
464+
}
465+
466+
@Test
467+
public void queuedProducerOnNextFull() {
468+
TestSubscriber<Integer> ts = TestSubscriber.create();
469+
QueuedProducer<Integer> qp = new QueuedProducer<Integer>(ts, new SpscArrayQueue<Object>(1));
470+
471+
qp.onNext(1);
472+
qp.onNext(2);
473+
474+
qp.request(1);
475+
476+
ts.assertError(MissingBackpressureException.class);
477+
}
478+
479+
@Test
480+
public void queuedProducerOnNextFullWithNull() {
481+
TestSubscriber<Integer> ts = TestSubscriber.create();
482+
QueuedProducer<Integer> qp = new QueuedProducer<Integer>(ts, new SpscArrayQueue<Object>(1));
483+
484+
qp.onNext(1);
485+
qp.onNext(null);
486+
487+
qp.request(1);
488+
489+
ts.assertError(MissingBackpressureException.class);
490+
}
491+
492+
@Test
493+
public void queuedProducerRequestCompletes() {
494+
TestSubscriber<Integer> ts = TestSubscriber.create();
495+
QueuedProducer<Integer> qp = new QueuedProducer<Integer>(ts, new SpscArrayQueue<Object>(1));
496+
497+
qp.onNext(1);
498+
qp.onCompleted();
499+
500+
qp.request(2);
501+
502+
ts.assertValue(1);
503+
ts.assertNoErrors();
504+
ts.assertCompleted();
505+
}
506+
507+
@Test
508+
public void queuedProducerUnsubscribed() {
509+
TestSubscriber<Integer> ts = TestSubscriber.create();
510+
ts.unsubscribe();
511+
QueuedProducer<Integer> qp = new QueuedProducer<Integer>(ts, new SpscArrayQueue<Object>(1));
512+
513+
qp.onNext(1);
514+
qp.onCompleted();
515+
516+
qp.request(2);
517+
518+
ts.assertNoValues();
519+
ts.assertNoErrors();
520+
ts.assertNotCompleted();
521+
}
522+
429523
}

src/test/java/rx/internal/util/ExceptionUtilsTest.java

+13
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package rx.internal.util;
1717

18+
import static org.junit.Assert.*;
19+
1820
import java.util.concurrent.atomic.AtomicReference;
1921

2022
import org.junit.*;
@@ -51,4 +53,15 @@ public void isTerminated() {
5153
Assert.assertTrue(ExceptionsUtils.isTerminated(error));
5254
Assert.assertTrue(ExceptionsUtils.isTerminated(error.get()));
5355
}
56+
57+
@Test
58+
public void utilityEnum() {
59+
assertEquals(0, ExceptionsUtils.values().length);
60+
try {
61+
ExceptionsUtils.valueOf("INSTANCE");
62+
fail("Failed to throw IllegalArgumentException");
63+
} catch (IllegalArgumentException ex) {
64+
// expected
65+
}
66+
}
5467
}

src/test/java/rx/internal/util/UtilityFunctionsTest.java

+16
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package rx.internal.util;
1717

1818
import org.junit.Test;
19+
import static org.junit.Assert.*;
1920

2021
import rx.TestUtil;
2122

@@ -24,4 +25,19 @@ public class UtilityFunctionsTest {
2425
public void constructorShouldBePrivate() {
2526
TestUtil.checkUtilityClass(UtilityFunctions.class);
2627
}
28+
29+
@Test
30+
public void alwaysFalse() {
31+
assertEquals(1, UtilityFunctions.AlwaysFalse.values().length);
32+
assertNotNull(UtilityFunctions.AlwaysFalse.valueOf("INSTANCE"));
33+
assertFalse(UtilityFunctions.alwaysFalse().call(1));
34+
}
35+
36+
@Test
37+
public void alwaysTrue() {
38+
assertEquals(1, UtilityFunctions.AlwaysTrue.values().length);
39+
assertNotNull(UtilityFunctions.AlwaysTrue.valueOf("INSTANCE"));
40+
assertTrue(UtilityFunctions.alwaysTrue().call(1));
41+
}
42+
2743
}

0 commit comments

Comments
 (0)