59a60,61 > import quickfix.field.LastPx; > import quickfix.field.LastQty; 60a63,66 > import quickfix.field.LegPrice; > import quickfix.field.LegQty; > import quickfix.field.LegRefID; > import quickfix.field.LegSymbol; 74a81 > import quickfix.field.PreviouslyReported; 91a99 > import quickfix.field.Text; 92a101,102 > import quickfix.field.TradeDate; > import quickfix.field.TradeReportID; 105a116 > import quickfix.fix44.TradeCaptureReport; 1290a1302,1378 > @Test > public void testRepeatingGroupCount() throws Exception { > /* > * Prepare a vary simple TradeCaptureReport message template and two > * legs. > */ > Message tcr = new TradeCaptureReport(new TradeReportID("ABC1234"), new PreviouslyReported( > false), new LastQty(1000), new LastPx(5.6789), new TradeDate("20140101"), > new TransactTime(new Date())); > tcr.getHeader().setField(new SenderCompID("SENDER")); > tcr.getHeader().setField(new TargetCompID("TARGET")); > tcr.getHeader().setField(new MsgSeqNum(1)); > tcr.getHeader().setField(new SendingTime(new Date())); > TradeCaptureReport.NoLegs leg1 = new TradeCaptureReport.NoLegs(); > leg1.setField(new LegSymbol("L1-XYZ")); > leg1.setField(new LegRefID("ABC1234-L1")); > leg1.setField(new LegQty(333)); > leg1.setField(new LegPrice(1.2345)); > TradeCaptureReport.NoLegs leg2 = new TradeCaptureReport.NoLegs(); > leg2.setField(new LegSymbol("L2-XYZ")); > leg2.setField(new LegRefID("ABC1234-L2")); > leg2.setField(new LegQty(777)); > leg2.setField(new LegPrice(2.3456)); > > /* > * Create a message from the template and add two legs. Convert the > * message to string and parse it. The parsed message should contain two > * legs. > */ > > { > Message m1 = new Message(); > m1.getHeader().setFields(tcr.getHeader()); > m1.setFields(tcr); > m1.addGroup(leg1); > m1.addGroup(leg2); > > String s1 = m1.toString(); > Message parsed1 = new Message(s1, DataDictionaryTest.getDictionary()); > > System.out.println("m1 (original): " + s1); > System.out.println("m1 (parsed) : " + parsed1.toString()); > > assertEquals(2, parsed1.getGroupCount(555)); > } > > /* > * Create a message from the template and add two legs, but the first > * leg contains the additional tag 58 (Text). Convert the message to > * string and parse it. The parsed message should also contain two legs. > */ > > { > Message m2 = new Message(); > m2.getHeader().setFields(tcr.getHeader()); > m2.setFields(tcr); > > leg1.setField(new Text("TXT1")); // add unexpected tag to leg1 > m2.addGroup(leg1); > m2.addGroup(leg2); > > String s2 = m2.toString(); > Message parsed2 = new Message(s2, DataDictionaryTest.getDictionary()); > > System.out.println("m2 (original): " + s2); > System.out.println("m2 (parsed) : " + parsed2.toString()); > > assertEquals(2, parsed2.getGroupCount(555)); > > /* > * If the above test failed, it means that a simple addition of an > * unexpected tag made the parsing logic fail pretty badly, as the > * number of legs is no 2. > */ > } > } >