@@ -672,33 +672,38 @@ public void TestMessageStoreAccessor()
672672 }
673673
674674 [ Test ]
675- public void TestRequiresOrigSendingTime_Y ( )
675+ public void TestPossDupFlagTrueRequiresOrigSendingTime_Y ( )
676676 {
677677 // Under default configuration, session should reject a ResendRequest that lacks OrigSendingTime unset
678-
678+ // When PossDupFlag is true
679+
679680 // Check default is as expected
680681 Assert . That ( _session ! . RequiresOrigSendingTime , Is . EqualTo ( true ) ) ;
681682
682683 Logon ( ) ;
683-
684+
684685 QuickFix . FIX42 . SequenceReset sr = new ( new QuickFix . Fields . NewSeqNo ( 5 ) ) ;
685686 sr . GapFillFlag = new QuickFix . Fields . GapFillFlag ( true ) ;
686687 sr . Header . SetField ( new QuickFix . Fields . PossDupFlag ( true ) ) ;
687688
688- sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum -- ) ) ; // so it triggers DoTargetTooLow code
689+ sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum -- ) ) ; // even if it doesn't trigger DoTargetTooLow code
689690
690691 SendTheMessage ( sr ) ;
691692
693+ Console . WriteLine ( $ "MsgLookup Keys: { string . Join ( "," , _responder . MsgLookup . Keys ) } ") ;
694+
695+ Assert . That ( _responder . MsgLookup . ContainsKey ( QuickFix . Fields . MsgType . REJECT ) ) ;
692696 Assert . That ( _responder . MsgLookup [ QuickFix . Fields . MsgType . REJECT ] . Count == 1 ) ;
693697 QuickFix . FIX42 . Reject rej =
694698 ( _responder . MsgLookup [ QuickFix . Fields . MsgType . REJECT ] . Peek ( ) as QuickFix . FIX42 . Reject ) ! ;
695699 Assert . That ( rej . SessionRejectReason . Value , Is . EqualTo ( QuickFix . Fields . SessionRejectReason . REQUIRED_TAG_MISSING ) ) ;
696700 }
697701
698702 [ Test ]
699- public void TestRequiresOrigSendingTime_N ( )
703+ public void TestPossDupFlagTrueRequiresOrigSendingTime_N ( )
700704 {
701705 // Under OrigSendingTime=N, session will allow ResendRequest that lacks OrigSendingTime
706+ // When PossDupFlag is true
702707 _session ! . RequiresOrigSendingTime = false ;
703708
704709 Logon ( ) ;
@@ -707,10 +712,55 @@ public void TestRequiresOrigSendingTime_N()
707712 sr . GapFillFlag = new QuickFix . Fields . GapFillFlag ( true ) ;
708713 sr . Header . SetField ( new QuickFix . Fields . PossDupFlag ( true ) ) ;
709714
710- sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum -- ) ) ; // so it triggers DoTargetTooLow code
715+ sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum -- ) ) ; // even if it doesn't trigger DoTargetTooLow code
716+
717+ SendTheMessage ( sr ) ;
718+
719+ Assert . That ( _responder . MsgLookup . ContainsKey ( QuickFix . Fields . MsgType . REJECT ) , Is . False ) ;
720+ }
721+
722+ [ Test ]
723+ public void TestPossDupFlagFalseRequiresOrigSendingTime_Y ( )
724+ {
725+ // Under default configuration, session should not reject a ResendRequest that lacks OrigSendingTime unset
726+ // When PossDupFlag is false
727+
728+ // Check default is as expected
729+ Assert . That ( _session ! . RequiresOrigSendingTime , Is . EqualTo ( true ) ) ;
730+
731+ Logon ( ) ;
732+
733+ QuickFix . FIX42 . SequenceReset sr = new ( new QuickFix . Fields . NewSeqNo ( 5 ) ) ;
734+ sr . GapFillFlag = new QuickFix . Fields . GapFillFlag ( true ) ;
735+ sr . Header . SetField ( new QuickFix . Fields . PossDupFlag ( false ) ) ; // so it triggers DoTargetTooLow code
736+
737+ sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum ) ) ; // so it doesn't fail on MsgSeqNum too low
738+
739+ SendTheMessage ( sr ) ;
740+
741+ Console . WriteLine ( $ "MsgLookup Keys: { string . Join ( "," , _responder . MsgLookup . Keys ) } ") ;
742+
743+ Assert . That ( _responder . MsgLookup . ContainsKey ( QuickFix . Fields . MsgType . REJECT ) , Is . False ) ;
744+ }
745+
746+ [ Test ]
747+ public void TestPossDupFlagFalseRequiresOrigSendingTime_N ( )
748+ {
749+ // Under OrigSendingTime=N, session will allow ResendRequest that lacks OrigSendingTime
750+ // When PossDupFlag is false
751+ _session ! . RequiresOrigSendingTime = false ;
752+
753+ Logon ( ) ;
754+
755+ QuickFix . FIX42 . SequenceReset sr = new ( new QuickFix . Fields . NewSeqNo ( 5 ) ) ;
756+ sr . GapFillFlag = new QuickFix . Fields . GapFillFlag ( true ) ;
757+ sr . Header . SetField ( new QuickFix . Fields . PossDupFlag ( false ) ) ; // so it triggers DoTargetTooLow code
758+
759+ sr . Header . SetField ( new QuickFix . Fields . MsgSeqNum ( _seqNum ) ) ; // so it doesn't fail on MsgSeqNum too low
711760
712761 SendTheMessage ( sr ) ;
713762
763+ Console . WriteLine ( $ "MsgLookup Keys: { string . Join ( "," , _responder . MsgLookup . Keys ) } ") ;
714764 Assert . That ( _responder . MsgLookup . ContainsKey ( QuickFix . Fields . MsgType . REJECT ) , Is . False ) ;
715765 }
716766
0 commit comments