Skip to content

Commit 2cd65e2

Browse files
Added more session tests for new cases where gapFillFlag=Y and possDupFlag=Y yet do not trigger DoTargetTooLow thus not checking for OrigSendingTime under the new logic
1 parent 93b27fb commit 2cd65e2

File tree

1 file changed

+56
-6
lines changed

1 file changed

+56
-6
lines changed

UnitTests/SessionTest.cs

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)