Skip to content

Commit 35c5589

Browse files
committed
Enable nullable reference types and apply notnull constraints to messaging interfaces, implementations, and unit tests.
1 parent 2ef678f commit 35c5589

8 files changed

Lines changed: 27 additions & 17 deletions

File tree

source/Reactive/CreativeCoders.Reactive.Messaging/CreativeCoders.Reactive.Messaging.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup>
44
<OutputType>Library</OutputType>
55
<Description>Simple message topic implementation based on Reactive.net</Description>
6+
<Nullable>enable</Nullable>
67
</PropertyGroup>
78

89
<ItemGroup>

source/Reactive/CreativeCoders.Reactive.Messaging/IMessageTopic.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ namespace CreativeCoders.Reactive.Messaging;
77
[PublicAPI]
88
public interface IMessageTopic
99
{
10-
void Publish<TMessage>(TMessage message);
10+
void Publish<TMessage>(TMessage message)
11+
where TMessage : notnull;
1112

12-
IObservable<TMessage> Register<TMessage>();
13+
IObservable<TMessage> Register<TMessage>()
14+
where TMessage : notnull;
1315

14-
IObservable<TMessage> Register<TMessage>(IScheduler scheduler);
16+
IObservable<TMessage> Register<TMessage>(IScheduler scheduler)
17+
where TMessage : notnull;
1518
}

source/Reactive/CreativeCoders.Reactive.Messaging/IMessageTopicGeneric.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ namespace CreativeCoders.Reactive.Messaging;
66

77
[PublicAPI]
88
public interface IMessageTopic<TMessage>
9+
where TMessage : notnull
910
{
1011
void Publish(TMessage message);
1112

source/Reactive/CreativeCoders.Reactive.Messaging/MessageTopic.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ public MessageTopic()
1818
}
1919

2020
public void Publish<TMessage>(TMessage message)
21+
where TMessage : notnull
2122
{
2223
Ensure.IsNotNull(message);
2324

2425
_messageSubject.OnNext(message);
2526
}
2627

2728
public IObservable<TMessage> Register<TMessage>()
29+
where TMessage : notnull
2830
{
2931
var registration = _messageSubject
3032
.OfType<TMessage>()
@@ -35,6 +37,7 @@ public IObservable<TMessage> Register<TMessage>()
3537
}
3638

3739
public IObservable<TMessage> Register<TMessage>(IScheduler scheduler)
40+
where TMessage : notnull
3841
{
3942
Ensure.IsNotNull(scheduler);
4043

source/Reactive/CreativeCoders.Reactive.Messaging/MessageTopicGeneric.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
namespace CreativeCoders.Reactive.Messaging;
88

99
public class MessageTopic<TMessage> : IMessageTopic<TMessage>
10+
where TMessage : notnull
1011
{
1112
private readonly ISubject<TMessage> _messageSubject;
1213

tests/CreativeCoders.Reactive.UnitTests/CreativeCoders.Reactive.UnitTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Library</OutputType>
5+
<Nullable>enable</Nullable>
56
</PropertyGroup>
67

78
<ItemGroup>

tests/CreativeCoders.Reactive.UnitTests/MessageTopicGenericTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ public void PublishTest()
2020

2121
topic.Publish("Test");
2222

23-
Assert.Throws<ArgumentNullException>(() => topic.Publish(null));
23+
Assert.Throws<ArgumentNullException>(() => topic.Publish(null!));
2424
}
2525

2626
[Fact]
2727
public void RegisterTest()
2828
{
2929
var topic = new MessageTopic<object>();
3030

31-
object msgPublished = null;
31+
object? msgPublished = null;
3232

3333
topic.Register().Subscribe(o => msgPublished = o);
3434

@@ -44,7 +44,7 @@ public void PublishTestDifferentMessageTypesWithScheduler()
4444
{
4545
var topic = new MessageTopic<object>();
4646

47-
object msgPublished = null;
47+
object? msgPublished = null;
4848
var strPublished = false;
4949

5050
topic.Register(Scheduler.Immediate).Subscribe(o => msgPublished = o);
@@ -70,7 +70,7 @@ public void PublishTestDifferentMessageTypes()
7070
{
7171
var topic = new MessageTopic<object>();
7272

73-
object msgPublished = null;
73+
object? msgPublished = null;
7474
var strPublished = false;
7575

7676
topic.Register().Subscribe(o => msgPublished = o);
@@ -96,15 +96,15 @@ public void PublishTestBeforeRegisterGeneric()
9696
{
9797
var topic = new MessageTopic<object>();
9898

99-
object objPublished = null;
99+
object? objPublished = null;
100100

101101
topic.Register<object>().Subscribe(o => objPublished = o);
102102

103103
var obj = new object();
104104

105105
topic.Publish(obj);
106106

107-
object secondObjPublished = null;
107+
object? secondObjPublished = null;
108108

109109
topic.Register<object>().Subscribe(o => secondObjPublished = o);
110110

@@ -125,15 +125,15 @@ public void PublishTestBeforeRegister()
125125
{
126126
var topic = new MessageTopic<object>();
127127

128-
object objPublished = null;
128+
object? objPublished = null;
129129

130130
topic.Register().Subscribe(o => objPublished = o);
131131

132132
var obj = new object();
133133

134134
topic.Publish(obj);
135135

136-
object secondObjPublished = null;
136+
object? secondObjPublished = null;
137137

138138
topic.Register().Subscribe(o => secondObjPublished = o);
139139

tests/CreativeCoders.Reactive.UnitTests/MessageTopicTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ public void PublishTest()
2020

2121
topic.Publish("Test");
2222

23-
Assert.Throws<ArgumentNullException>(() => topic.Publish<object>(null));
23+
Assert.Throws<ArgumentNullException>(() => topic.Publish<object>(null!));
2424
}
2525

2626
[Fact]
2727
public void RegisterTest()
2828
{
2929
var topic = new MessageTopic();
3030

31-
object msgPublished = null;
31+
object? msgPublished = null;
3232

3333
topic
3434
.Register<object>()
@@ -46,7 +46,7 @@ public void RegisterTestScheduler()
4646
{
4747
var topic = new MessageTopic();
4848

49-
object msgPublished = null;
49+
object? msgPublished = null;
5050

5151
topic
5252
.Register<object>(Scheduler.Immediate)
@@ -64,7 +64,7 @@ public void PublishTestDifferentMessageTypes()
6464
{
6565
var topic = new MessageTopic();
6666

67-
object msgPublished = null;
67+
object? msgPublished = null;
6868
var strPublished = false;
6969

7070
topic.Register<object>()
@@ -92,15 +92,15 @@ public void PublishTestBeforeRegister()
9292
{
9393
var topic = new MessageTopic();
9494

95-
object objPublished = null;
95+
object? objPublished = null;
9696

9797
topic.Register<object>().Subscribe(o => objPublished = o);
9898

9999
var obj = new object();
100100

101101
topic.Publish(obj);
102102

103-
object secondObjPublished = null;
103+
object? secondObjPublished = null;
104104

105105
topic.Register<object>().Subscribe(o => secondObjPublished = o);
106106

0 commit comments

Comments
 (0)