@@ -702,33 +702,38 @@ public void TestMessageStoreAccessor()
702702 }
703703
704704 [ Test ]
705- public void TestRequiresOrigSendingTime_Y ( )
705+ public void TestPossDupFlagTrueRequiresOrigSendingTime_Y ( )
706706 {
707707 // Under default configuration, session should reject a ResendRequest that lacks OrigSendingTime unset
708-
708+ // When PossDupFlag is true
709+
709710 // Check default is as expected
710711 Assert . That ( _session ! . RequiresOrigSendingTime , Is . EqualTo ( true ) ) ;
711712
712713 Logon ( ) ;
713-
714+
714715 QuickFix . FIX42 . SequenceReset sr = new ( new QuickFix . Fields . NewSeqNo ( 5 ) ) ;
715716 sr . GapFillFlag = new QuickFix . Fields . GapFillFlag ( true ) ;
716717 sr . Header . SetField ( new QuickFix . Fields . PossDupFlag ( true ) ) ;
717718
718- sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum -- ) ) ; // so it triggers DoTargetTooLow code
719+ sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum -- ) ) ; // even if it doesn't trigger DoTargetTooLow code
719720
720721 SendTheMessage ( sr ) ;
721722
723+ Console . WriteLine ( $ "MsgLookup Keys: { string . Join ( "," , _responder . MsgLookup . Keys ) } ") ;
724+
725+ Assert . That ( _responder . MsgLookup . ContainsKey ( QuickFix . Fields . MsgType . REJECT ) ) ;
722726 Assert . That ( _responder . MsgLookup [ QuickFix . Fields . MsgType . REJECT ] . Count == 1 ) ;
723727 QuickFix . FIX42 . Reject rej =
724728 ( _responder . MsgLookup [ QuickFix . Fields . MsgType . REJECT ] . Peek ( ) as QuickFix . FIX42 . Reject ) ! ;
725729 Assert . That ( rej . SessionRejectReason . Value , Is . EqualTo ( QuickFix . Fields . SessionRejectReason . REQUIRED_TAG_MISSING ) ) ;
726730 }
727731
728732 [ Test ]
729- public void TestRequiresOrigSendingTime_N ( )
733+ public void TestPossDupFlagTrueRequiresOrigSendingTime_N ( )
730734 {
731735 // Under OrigSendingTime=N, session will allow ResendRequest that lacks OrigSendingTime
736+ // When PossDupFlag is true
732737 _session ! . RequiresOrigSendingTime = false ;
733738
734739 Logon ( ) ;
@@ -737,10 +742,55 @@ public void TestRequiresOrigSendingTime_N()
737742 sr . GapFillFlag = new QuickFix . Fields . GapFillFlag ( true ) ;
738743 sr . Header . SetField ( new QuickFix . Fields . PossDupFlag ( true ) ) ;
739744
740- sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum -- ) ) ; // so it triggers DoTargetTooLow code
745+ sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum -- ) ) ; // even if it doesn't trigger DoTargetTooLow code
746+
747+ SendTheMessage ( sr ) ;
748+
749+ Assert . That ( _responder . MsgLookup . ContainsKey ( QuickFix . Fields . MsgType . REJECT ) , Is . False ) ;
750+ }
751+
752+ [ Test ]
753+ public void TestPossDupFlagFalseRequiresOrigSendingTime_Y ( )
754+ {
755+ // Under default configuration, session should not reject a ResendRequest that lacks OrigSendingTime unset
756+ // When PossDupFlag is false
757+
758+ // Check default is as expected
759+ Assert . That ( _session ! . RequiresOrigSendingTime , Is . EqualTo ( true ) ) ;
760+
761+ Logon ( ) ;
762+
763+ QuickFix . FIX42 . SequenceReset sr = new ( new QuickFix . Fields . NewSeqNo ( 5 ) ) ;
764+ sr . GapFillFlag = new QuickFix . Fields . GapFillFlag ( true ) ;
765+ sr . Header . SetField ( new QuickFix . Fields . PossDupFlag ( false ) ) ; // so it triggers DoTargetTooLow code
766+
767+ sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum ) ) ; // so it doesn't fail on MsgSeqNum too low
768+
769+ SendTheMessage ( sr ) ;
770+
771+ Console . WriteLine ( $ "MsgLookup Keys: { string . Join ( "," , _responder . MsgLookup . Keys ) } ") ;
772+
773+ Assert . That ( _responder . MsgLookup . ContainsKey ( QuickFix . Fields . MsgType . REJECT ) , Is . False ) ;
774+ }
775+
776+ [ Test ]
777+ public void TestPossDupFlagFalseRequiresOrigSendingTime_N ( )
778+ {
779+ // Under OrigSendingTime=N, session will allow ResendRequest that lacks OrigSendingTime
780+ // When PossDupFlag is false
781+ _session ! . RequiresOrigSendingTime = false ;
782+
783+ Logon ( ) ;
784+
785+ QuickFix . FIX42 . SequenceReset sr = new ( new QuickFix . Fields . NewSeqNo ( 5 ) ) ;
786+ sr . GapFillFlag = new QuickFix . Fields . GapFillFlag ( true ) ;
787+ sr . Header . SetField ( new QuickFix . Fields . PossDupFlag ( false ) ) ; // so it triggers DoTargetTooLow code
788+
789+ sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum ) ) ; // so it doesn't fail on MsgSeqNum too low
741790
742791 SendTheMessage ( sr ) ;
743792
793+ Console . WriteLine ( $ "MsgLookup Keys: { string . Join ( "," , _responder . MsgLookup . Keys ) } ") ;
744794 Assert . That ( _responder . MsgLookup . ContainsKey ( QuickFix . Fields . MsgType . REJECT ) , Is . False ) ;
745795 }
746796
0 commit comments