1414*/
1515
1616using System ;
17- using System . Collections . Generic ;
1817using System . IO ;
19- using System . Linq ;
2018using System . Net ;
2119using System . Net . Sockets ;
2220using System . Threading ;
@@ -457,11 +455,7 @@ public void ReceiveMessage_should_complete_when_reply_is_not_already_on_the_stre
457455
458456 [ Theory ]
459457 [ ParameterAttributeData ]
460- public void ReceiveMessage_should_handle_out_of_order_replies(
461- [ Values ( false , true ) ]
462- bool async1,
463- [ Values ( false , true ) ]
464- bool async2)
458+ public void ReceiveMessage_should_throw_when_responseTo_incorrect( [ Values ( false , true ) ] bool async)
465459 {
466460 using ( var stream = new BlockingMemoryStream ( ) )
467461 {
@@ -470,46 +464,19 @@ public void ReceiveMessage_should_handle_out_of_order_replies(
470464 _subject. Open ( CancellationToken . None ) ;
471465 _capturedEvents. Clear ( ) ;
472466
473- var encoderSelector = new ReplyMessageEncoderSelector< BsonDocument > ( BsonDocumentSerializer . Instance ) ;
474- 475- Task< ResponseMessage > receivedTask10 ;
476- if ( async1 )
477- {
478- receivedTask10 = _subject . ReceiveMessageAsync ( 10 , encoderSelector , _messageEncoderSettings , CancellationToken . None ) ;
479- }
480- else
481- {
482- receivedTask10 = Task . Run ( ( ) => _subject . ReceiveMessage ( 10 , encoderSelector , _messageEncoderSettings , CancellationToken . None ) ) ;
483- }
484- 485- Task < ResponseMessage > receivedTask11 ;
486- if ( async2 )
487- {
488- receivedTask11 = _subject . ReceiveMessageAsync ( 11 , encoderSelector , _messageEncoderSettings , CancellationToken . None ) ;
489- }
490- else
491- {
492- receivedTask11 = Task . Run ( ( ) => _subject . ReceiveMessage ( 11 , encoderSelector , _messageEncoderSettings , CancellationToken . None ) ) ;
493- }
494- 495- SpinWait . SpinUntil ( ( ) => _capturedEvents . Count >= 2 , TimeSpan . FromSeconds ( 5 ) ) . Should ( ) . BeTrue ( ) ;
496- 497- var messageToReceive10 = MessageHelper. BuildReply< BsonDocument> ( new BsonDocument ( "_id" , 10 ) , BsonDocumentSerializer . Instance , responseTo : 10 ) ;
498467 var messageToReceive11 = MessageHelper. BuildReply < BsonDocument > ( new BsonDocument ( "_id" , 11 ) , BsonDocumentSerializer . Instance , responseTo : 11 ) ;
499- MessageHelper. WriteResponsesToStream ( stream , new [ ] { messageToReceive11 , messageToReceive10 } ) ; // out of order
468+ MessageHelper. WriteResponsesToStream ( stream , new [ ] { messageToReceive11 } ) ;
500469
501- var received10 = receivedTask10 . GetAwaiter ( ) . GetResult ( ) ;
502- var received11 = receivedTask11 . GetAwaiter ( ) . GetResult ( ) ;
503- 504- var expected = MessageHelper . TranslateMessagesToBsonDocuments ( new [ ] { messageToReceive10 , messageToReceive11 } ) ;
505- var actual = MessageHelper . TranslateMessagesToBsonDocuments ( new [ ] { received10 , received11 } ) ;
470+ var encoderSelector = new ReplyMessageEncoderSelector < BsonDocument > ( BsonDocumentSerializer . Instance ) ;
471+ Exception exception = Record . Exception (
472+ ( ) => async
473+ ? _subject . ReceiveMessageAsync ( 10 , encoderSelector , _messageEncoderSettings , CancellationToken . None ) . GetAwaiter ( ) . GetResult ( )
474+ : _subject . ReceiveMessage ( 10 , encoderSelector , _messageEncoderSettings , CancellationToken . None ) ) ;
506475
507- actual . Should ( ) . BeEquivalentTo ( expected ) ;
476+ exception . Should ( ) . BeOfType < InvalidOperationException > ( ) . Subject . Message . Should ( ) . Be ( "Expected responseTo to be 10 but was 11." ) ;
508477
509478 _capturedEvents. Next ( ) . Should ( ) . BeOfType < ConnectionReceivingMessageEvent > ( ) ;
510- _capturedEvents. Next ( ) . Should ( ) . BeOfType < ConnectionReceivingMessageEvent > ( ) ;
511- _capturedEvents. Next ( ) . Should ( ) . BeOfType < ConnectionReceivedMessageEvent > ( ) ;
512- _capturedEvents. Next ( ) . Should ( ) . BeOfType < ConnectionReceivedMessageEvent > ( ) ;
479+ _capturedEvents. Next ( ) . Should ( ) . BeOfType < ConnectionReceivingMessageFailedEvent > ( ) ;
513480 _capturedEvents. Any ( ) . Should ( ) . BeFalse ( ) ;
514481 }
515482 }
0 commit comments