@@ -1499,8 +1499,6 @@ private String getCommonDataDictionaryString(String data) {
14991499 public void testFirstFieldInGroupIsDelimiter () throws Exception {
15001500
15011501 final DataDictionary dataDictionary = new DataDictionary (getDictionary ());
1502- dataDictionary .setCheckUnorderedGroupFields (false );
1503- dataDictionary .setFirstFieldInGroupIsDelimiter (true );
15041502
15051503 String fixMsg = "8=FIX.4.4\u0001 9=688\u0001 35=AB\u0001 49=AAA\u0001 56=BBB\u0001 34=21133\u0001 50=ABCABC" +
15061504 "\u0001 52=20230905-13:24:37.022\u0001 55=AAPL\u0001 1=ACC1\u0001 11=123456abcedf\u0001 21=1\u0001 38=5\u0001 54=1\u0001 40=2\u0001 44=-0.8" +
@@ -1512,36 +1510,48 @@ public void testFirstFieldInGroupIsDelimiter() throws Exception {
15121510 "\u0001 59=0\u0001 60=20230905-13:24:36.984\u0001 100=ALGO\u0001 167=MLEG\u0001 555=3\u0001 600=AAA\u0001 602=111" +
15131511 "\u0001 600=BBB\u0001 602=222\u0001 654=231\u0001 600=CCC\u0001 602=333\u0001 654=332\u0001 58=TEXT\u0001 10=168\u0001 " ;
15141512
1515- //doValidation and firstFieldInGroupIsDelimiter -> should NOT fail
1513+ dataDictionary .setFirstFieldInGroupIsDelimiter (true );
1514+ dataDictionary .setCheckUnorderedGroupFields (false );
15161515 final NewOrderMultileg noml1 = new NewOrderMultileg ();
15171516 noml1 .fromString (fixMsg , dataDictionary , true );
15181517 dataDictionary .validate (noml1 );
15191518 assertTrue (noml1 .hasGroup (555 ));
15201519 assertEquals (3 , noml1 .getGroupCount (555 ));
1520+ //when firstFieldInGroupIsDelimiter = true and setCheckUnorderedGroupFields = false - valid
15211521 //delimiter should be first tag in group
15221522 assertEquals (602 , noml1 .getGroup (1 , 555 ).delim ());
15231523
15241524 dataDictionary .setFirstFieldInGroupIsDelimiter (false );
1525- dataDictionary .setCheckUnorderedGroupFields (true );
1525+ dataDictionary .setCheckUnorderedGroupFields (false );
15261526 final NewOrderMultileg noml2 = new NewOrderMultileg ();
15271527 noml2 .fromString (fixMsg , dataDictionary , true );
1528- //when firstFieldInGroupIsDelimiter = false and setCheckUnorderedGroupFields = true - exception is thrown
1528+ //when firstFieldInGroupIsDelimiter = false and setCheckUnorderedGroupFields = false - exception is thrown
15291529 assertThrows (FieldException .class , () -> dataDictionary .validate (noml2 ));
15301530
1531+ dataDictionary .setFirstFieldInGroupIsDelimiter (false );
1532+ dataDictionary .setCheckUnorderedGroupFields (true );
15311533 final NewOrderMultileg noml3 = new NewOrderMultileg ();
15321534 noml3 .fromString (fixMsg , dataDictionary , true );
1533- //when firstFieldInGroupIsDelimiter = true and setCheckUnorderedGroupFields = true - exception is thrown
1535+ //when firstFieldInGroupIsDelimiter = false and setCheckUnorderedGroupFields = true - exception is thrown
15341536 assertThrows (FieldException .class , () -> dataDictionary .validate (noml3 ));
15351537
1538+ dataDictionary .setFirstFieldInGroupIsDelimiter (true );
15361539 dataDictionary .setCheckUnorderedGroupFields (true );
15371540 final NewOrderMultileg noml4 = new NewOrderMultileg ();
1538- noml4 .fromString (byDictFixMsg , dataDictionary , true );
1541+ noml4 .fromString (fixMsg , dataDictionary , true );
1542+ //when firstFieldInGroupIsDelimiter = true and setCheckUnorderedGroupFields = true - exception is thrown, since order of tags is incorrect.
1543+ assertThrows (FieldException .class , () -> dataDictionary .validate (noml4 ));
1544+
1545+ dataDictionary .setFirstFieldInGroupIsDelimiter (true );
1546+ dataDictionary .setCheckUnorderedGroupFields (true );
1547+ final NewOrderMultileg noml5 = new NewOrderMultileg ();
1548+ noml5 .fromString (byDictFixMsg , dataDictionary , true );
15391549 //when firstFieldInGroupIsDelimiter = true and setCheckUnorderedGroupFields = true, message aligns with dictionary - do NOT fail
1540- dataDictionary .validate (noml4 );
1541- assertTrue (noml4 .hasGroup (555 ));
1542- assertEquals (3 , noml4 .getGroupCount (555 ));
1550+ dataDictionary .validate (noml5 );
1551+ assertTrue (noml5 .hasGroup (555 ));
1552+ assertEquals (3 , noml5 .getGroupCount (555 ));
15431553 //delimiter should be dictionary first tag = 600
1544- assertEquals (600 , noml4 .getGroup (1 , 555 ).delim ());
1554+ assertEquals (600 , noml5 .getGroup (1 , 555 ).delim ());
15451555 }
15461556
15471557
0 commit comments