@@ -12,9 +12,9 @@ namespace NetSdrClientAppTests
1212 [ TestFixture ]
1313 public class EchoServerServiceTests
1414 {
15- private Mock < ILogger > _mockLogger ;
16- private Mock < ITcpListenerFactory > _mockListenerFactory ;
17- private Mock < ITcpListenerWrapper > _mockListener ;
15+ private Mock < ILogger > ? _mockLogger ;
16+ private Mock < ITcpListenerFactory > ? _mockListenerFactory ;
17+ private Mock < ITcpListenerWrapper > ? _mockListener ;
1818
1919 [ SetUp ]
2020 public void SetUp ( )
@@ -36,18 +36,19 @@ public async Task HandleClientAsync_ShouldEchoReceivedData()
3636 var mockStream = new Mock < INetworkStreamWrapper > ( ) ;
3737
3838 byte [ ] receivedData = new byte [ ] { 1 , 2 , 3 , 4 , 5 } ;
39- byte [ ] echoedData = null ;
39+ byte [ ] ? echoedData = null ;
4040
41+ // ✅ ВИПРАВЛЕНО: використовуємо Func<> замість лямбди з параметрами
4142 mockStream
4243 . SetupSequence ( s => s . ReadAsync (
4344 It . IsAny < byte [ ] > ( ) ,
4445 It . IsAny < int > ( ) ,
4546 It . IsAny < int > ( ) ,
4647 It . IsAny < CancellationToken > ( ) ) )
47- . ReturnsAsync ( ( byte [ ] buffer , int offset , int count , CancellationToken token ) =>
48+ . Returns ( Task . FromResult ( 5 ) )
49+ . Callback < byte [ ] , int , int , CancellationToken > ( ( buffer , offset , count , token ) =>
4850 {
4951 Array . Copy ( receivedData , 0 , buffer , offset , receivedData . Length ) ;
50- return receivedData . Length ;
5152 } )
5253 . ReturnsAsync ( 0 ) ;
5354
@@ -66,7 +67,7 @@ public async Task HandleClientAsync_ShouldEchoReceivedData()
6667
6768 mockClient . Setup ( c => c . GetStream ( ) ) . Returns ( mockStream . Object ) ;
6869
69- var server = new EchoServerService ( 5000 , _mockLogger . Object , _mockListenerFactory . Object ) ;
70+ var server = new EchoServerService ( 5000 , _mockLogger ! . Object , _mockListenerFactory ! . Object ) ;
7071 var cts = new CancellationTokenSource ( ) ;
7172
7273 // Act
@@ -75,7 +76,7 @@ public async Task HandleClientAsync_ShouldEchoReceivedData()
7576 // Assert
7677 echoedData . Should ( ) . NotBeNull ( ) ;
7778 echoedData . Should ( ) . BeEquivalentTo ( receivedData ) ;
78- _mockLogger . Verify ( l => l . Log ( It . Is < string > ( s => s . Contains ( "Echoed 5 bytes" ) ) ) , Times . Once ) ;
79+ _mockLogger ! . Verify ( l => l . Log ( It . Is < string > ( s => s . Contains ( "Echoed 5 bytes" ) ) ) , Times . Once ) ;
7980 _mockLogger . Verify ( l => l . Log ( "Client disconnected." ) , Times . Once ) ;
8081 }
8182
@@ -96,7 +97,7 @@ public async Task HandleClientAsync_ShouldHandleEmptyStream()
9697
9798 mockClient . Setup ( c => c . GetStream ( ) ) . Returns ( mockStream . Object ) ;
9899
99- var server = new EchoServerService ( 5000 , _mockLogger . Object , _mockListenerFactory . Object ) ;
100+ var server = new EchoServerService ( 5000 , _mockLogger ! . Object , _mockListenerFactory ! . Object ) ;
100101 var cts = new CancellationTokenSource ( ) ;
101102
102103 // Act
@@ -110,7 +111,7 @@ public async Task HandleClientAsync_ShouldHandleEmptyStream()
110111 It . IsAny < int > ( ) ,
111112 It . IsAny < CancellationToken > ( ) ) ,
112113 Times . Never ) ;
113- _mockLogger . Verify ( l => l . Log ( "Client disconnected." ) , Times . Once ) ;
114+ _mockLogger ! . Verify ( l => l . Log ( "Client disconnected." ) , Times . Once ) ;
114115 }
115116
116117 [ Test ]
@@ -130,14 +131,14 @@ public async Task HandleClientAsync_ShouldHandleException()
130131
131132 mockClient . Setup ( c => c . GetStream ( ) ) . Returns ( mockStream . Object ) ;
132133
133- var server = new EchoServerService ( 5000 , _mockLogger . Object , _mockListenerFactory . Object ) ;
134+ var server = new EchoServerService ( 5000 , _mockLogger ! . Object , _mockListenerFactory ! . Object ) ;
134135 var cts = new CancellationTokenSource ( ) ;
135136
136137 // Act
137138 await server . HandleClientAsync ( mockClient . Object , cts . Token ) ;
138139
139140 // Assert
140- _mockLogger . Verify ( l => l . LogError ( It . Is < string > ( s => s . Contains ( "Network error" ) ) ) , Times . Once ) ;
141+ _mockLogger ! . Verify ( l => l . LogError ( It . Is < string > ( s => s . Contains ( "Network error" ) ) ) , Times . Once ) ;
141142 _mockLogger . Verify ( l => l . Log ( "Client disconnected." ) , Times . Once ) ;
142143 }
143144
@@ -151,21 +152,22 @@ public async Task HandleClientAsync_ShouldEchoMultipleMessages()
151152 byte [ ] message1 = new byte [ ] { 1 , 2 , 3 } ;
152153 byte [ ] message2 = new byte [ ] { 4 , 5 , 6 , 7 } ;
153154
155+ // ✅ ВИПРАВЛЕНО: правильний синтаксис для SetupSequence
154156 mockStream
155157 . SetupSequence ( s => s . ReadAsync (
156158 It . IsAny < byte [ ] > ( ) ,
157159 It . IsAny < int > ( ) ,
158160 It . IsAny < int > ( ) ,
159161 It . IsAny < CancellationToken > ( ) ) )
160- . ReturnsAsync ( ( byte [ ] buffer , int offset , int count , CancellationToken token ) =>
162+ . Returns ( Task . FromResult ( message1 . Length ) )
163+ . Callback < byte [ ] , int , int , CancellationToken > ( ( buffer , offset , count , token ) =>
161164 {
162165 Array . Copy ( message1 , 0 , buffer , offset , message1 . Length ) ;
163- return message1 . Length ;
164166 } )
165- . ReturnsAsync ( ( byte [ ] buffer , int offset , int count , CancellationToken token ) =>
167+ . Returns ( Task . FromResult ( message2 . Length ) )
168+ . Callback < byte [ ] , int , int , CancellationToken > ( ( buffer , offset , count , token ) =>
166169 {
167170 Array . Copy ( message2 , 0 , buffer , offset , message2 . Length ) ;
168- return message2 . Length ;
169171 } )
170172 . ReturnsAsync ( 0 ) ;
171173
@@ -181,22 +183,22 @@ public async Task HandleClientAsync_ShouldEchoMultipleMessages()
181183
182184 mockClient . Setup ( c => c . GetStream ( ) ) . Returns ( mockStream . Object ) ;
183185
184- var server = new EchoServerService ( 5000 , _mockLogger . Object , _mockListenerFactory . Object ) ;
186+ var server = new EchoServerService ( 5000 , _mockLogger ! . Object , _mockListenerFactory ! . Object ) ;
185187 var cts = new CancellationTokenSource ( ) ;
186188
187189 // Act
188190 await server . HandleClientAsync ( mockClient . Object , cts . Token ) ;
189191
190192 // Assert
191193 writeCount . Should ( ) . Be ( 2 ) ;
192- _mockLogger . Verify ( l => l . Log ( It . Is < string > ( s => s . Contains ( "Echoed" ) ) ) , Times . Exactly ( 2 ) ) ;
194+ _mockLogger ! . Verify ( l => l . Log ( It . Is < string > ( s => s . Contains ( "Echoed" ) ) ) , Times . Exactly ( 2 ) ) ;
193195 }
194196
195197 [ Test ]
196198 public void Constructor_ShouldThrowException_WhenLoggerIsNull ( )
197199 {
198200 // Arrange & Act
199- Action act = ( ) => new EchoServerService ( 5000 , null , _mockListenerFactory . Object ) ;
201+ Action act = ( ) => new EchoServerService ( 5000 , null ! , _mockListenerFactory ! . Object ) ;
200202
201203 // Assert
202204 act . Should ( ) . Throw < ArgumentNullException > ( )
@@ -207,7 +209,7 @@ public void Constructor_ShouldThrowException_WhenLoggerIsNull()
207209 public void Constructor_ShouldThrowException_WhenListenerFactoryIsNull ( )
208210 {
209211 // Arrange & Act
210- Action act = ( ) => new EchoServerService ( 5000 , _mockLogger . Object , null ) ;
212+ Action act = ( ) => new EchoServerService ( 5000 , _mockLogger ! . Object , null ! ) ;
211213
212214 // Assert
213215 act . Should ( ) . Throw < ArgumentNullException > ( )
@@ -228,22 +230,18 @@ public async Task HandleClientAsync_ShouldStopOnCancellation()
228230 It . IsAny < int > ( ) ,
229231 It . IsAny < int > ( ) ,
230232 It . IsAny < CancellationToken > ( ) ) )
231- . Returns ( async ( byte [ ] buffer , int offset , int count , CancellationToken token ) =>
232- {
233- await Task . Delay ( 100 , token ) ;
234- return 5 ;
235- } ) ;
233+ . ReturnsAsync ( 5 ) ;
236234
237235 mockClient . Setup ( c => c . GetStream ( ) ) . Returns ( mockStream . Object ) ;
238236
239- var server = new EchoServerService ( 5000 , _mockLogger . Object , _mockListenerFactory . Object ) ;
237+ var server = new EchoServerService ( 5000 , _mockLogger ! . Object , _mockListenerFactory ! . Object ) ;
240238
241239 // Act
242240 cts . Cancel ( ) ;
243241 await server . HandleClientAsync ( mockClient . Object , cts . Token ) ;
244242
245243 // Assert
246- _mockLogger . Verify ( l => l . Log ( "Client disconnected." ) , Times . Once ) ;
244+ _mockLogger ! . Verify ( l => l . Log ( "Client disconnected." ) , Times . Once ) ;
247245 }
248246 }
249247}
0 commit comments