Skip to content

Commit ee890a0

Browse files
committed
restore nullable whitebox test
1 parent de71fb1 commit ee890a0

File tree

1 file changed

+65
-2
lines changed

1 file changed

+65
-2
lines changed

src/examples/Reactive.Streams.Example.Unicast.Tests/SyncSubscriberWhiteboxTest.cs

+65-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
namespace Reactive.Streams.Example.Unicast.Tests
66
{
77
[TestFixture]
8-
public class SyncSubscriberWhiteboxTest : SubscriberWhiteboxVerification<int>
8+
public class ValueTypeSyncSubscriberWhiteboxTest : SubscriberWhiteboxVerification<int>
99
{
10-
public SyncSubscriberWhiteboxTest() : base(new TestEnvironment())
10+
public ValueTypeSyncSubscriberWhiteboxTest() : base(new TestEnvironment())
1111
{
1212
}
1313

@@ -66,4 +66,67 @@ public override void OnComplete()
6666
}
6767
}
6868
}
69+
70+
[TestFixture]
71+
public class NullableSyncSubscriberWhiteboxTest : SubscriberWhiteboxVerification<int?>
72+
{
73+
public NullableSyncSubscriberWhiteboxTest() : base(new TestEnvironment())
74+
{
75+
}
76+
77+
public override int? CreateElement(int element) => element;
78+
79+
public override ISubscriber<int?> CreateSubscriber(WhiteboxSubscriberProbe<int?> probe) => new Subscriber(probe);
80+
81+
private sealed class Subscriber : SyncSubscriber<int?>
82+
{
83+
private readonly WhiteboxSubscriberProbe<int?> _probe;
84+
85+
public Subscriber(WhiteboxSubscriberProbe<int?> probe)
86+
{
87+
_probe = probe;
88+
}
89+
90+
public override void OnSubscribe(ISubscription subscription)
91+
{
92+
base.OnSubscribe(subscription);
93+
94+
_probe.RegisterOnSubscribe(new SubscriberPuppet(subscription));
95+
}
96+
97+
private sealed class SubscriberPuppet : ISubscriberPuppet
98+
{
99+
private readonly ISubscription _subscription;
100+
101+
public SubscriberPuppet(ISubscription subscription)
102+
{
103+
_subscription = subscription;
104+
}
105+
106+
public void TriggerRequest(long elements) => _subscription.Request(elements);
107+
108+
public void SignalCancel() => _subscription.Cancel();
109+
}
110+
111+
public override void OnNext(int? element)
112+
{
113+
base.OnNext(element);
114+
_probe.RegisterOnNext(element);
115+
}
116+
117+
protected override bool WhenNext(int? element) => true;
118+
119+
public override void OnError(Exception cause)
120+
{
121+
base.OnError(cause);
122+
_probe.RegisterOnError(cause);
123+
}
124+
125+
public override void OnComplete()
126+
{
127+
base.OnComplete();
128+
_probe.RegisterOnComplete();
129+
}
130+
}
131+
}
69132
}

0 commit comments

Comments
 (0)