@@ -52,6 +52,185 @@ public void testMessageSetGetString() {
5252 assertEquals (side1 , side2 );
5353 }
5454
55+ private void testFieldCalcuations (String value , int checksum , int length ) {
56+ Field <String > field = new Field <>(12 , value );
57+ field .setObject (value );
58+ assertEquals ("12=" + value , field .toString ());
59+ assertEquals (checksum , field .getChecksum ());
60+ assertEquals (length , field .getLength ());
61+
62+ value = value .substring (0 , value .length () - 1 ) + (char )(value .charAt (value .length () - 1 ) + 1 );
63+ checksum = (checksum + 1 ) & 0xFF ;
64+ field .setObject (value );
65+ assertEquals ("12=" + value , field .toString ());
66+ assertEquals (checksum , field .getChecksum ());
67+ assertEquals (length , field .getLength ());
68+
69+ field .setTag (13 );
70+ checksum = (checksum + 1 ) & 0xFF ;
71+ assertEquals ("13=" + value , field .toString ());
72+ assertEquals (checksum , field .getChecksum ());
73+ assertEquals (length , field .getLength ());
74+ }
75+
76+ @ Test
77+ public void testFieldCalculationsWithDefaultCharset () {
78+ testFieldCalcuations ("VALUE" , 30 , 9 );
79+ }
80+
81+ @ Test
82+ public void testFieldCalculationsWithUTF8Charset () throws UnsupportedEncodingException {
83+ CharsetSupport .setCharset ("UTF-8" );
84+ try {
85+ testFieldCalcuations ("\u6D4B \u9A8C \u6570 \u636E " , 50 , 16 );
86+ } finally {
87+ CharsetSupport .setDefaultCharset ();
88+ }
89+ }
90+
91+ @ Test
92+ public void testDateField () {
93+ DateField field = new DateField (11 );
94+ Date date = new Date ();
95+ field .setValue (date );
96+ assertEquals (11 , field .getTag ());
97+ assertEquals (date , field .getValue ());
98+ field = new DateField (11 , date );
99+ assertEquals (11 , field .getTag ());
100+ assertEquals (date , field .getValue ());
101+ }
102+
103+ @ Test
104+ public void testUtcDateOnlyField () {
105+ UtcDateOnlyField field = new UtcDateOnlyField (11 );
106+ LocalDate date = LocalDate .now ();
107+ field .setValue (date );
108+ assertEquals (11 , field .getTag ());
109+ assertEquals (date , field .getValue ());
110+ field = new UtcDateOnlyField (11 , date );
111+ assertEquals (11 , field .getTag ());
112+ assertEquals (date , field .getValue ());
113+ }
114+
115+ @ Test
116+ public void testUtcTimeOnlyField () {
117+ UtcTimeOnlyField field = new UtcTimeOnlyField (11 );
118+ LocalTime date = LocalTime .now ();
119+ field .setValue (date );
120+ assertEquals (11 , field .getTag ());
121+ assertEquals (date , field .getValue ());
122+ field = new UtcTimeOnlyField (11 , date );
123+ assertEquals (11 , field .getTag ());
124+ assertEquals (date , field .getValue ());
125+ }
126+
127+ @ Test
128+ public void testUtcTimeStampField () {
129+ UtcTimeStampField field = new UtcTimeStampField (11 );
130+ LocalDateTime date = LocalDateTime .now ();
131+ field .setValue (date );
132+ assertEquals (11 , field .getTag ());
133+ assertEquals (date , field .getValue ());
134+ field = new UtcTimeStampField (11 , date );
135+ assertEquals (11 , field .getTag ());
136+ assertEquals (date , field .getValue ());
137+ }
138+
139+ @ Test
140+ public void testBooleanField () {
141+ BooleanField field = new BooleanField (11 );
142+ field .setValue (true );
143+ assertEquals (11 , field .getTag ());
144+ assertTrue (field .getValue ());
145+ field .setValue (Boolean .FALSE );
146+ assertEquals (11 , field .getTag ());
147+ assertFalse (field .getValue ());
148+ field = new BooleanField (22 , true );
149+ assertEquals (22 , field .getTag ());
150+ assertTrue (field .getValue ());
151+ field = new BooleanField (33 , Boolean .TRUE );
152+ assertEquals (33 , field .getTag ());
153+ assertTrue (field .getValue ());
154+ }
155+
156+ @ Test
157+ public void testDoubleField () {
158+ DoubleField field = new DoubleField (11 );
159+ field .setValue (12.3 );
160+ assertEquals (11 , field .getTag ());
161+ assertEquals (12.3 , field .getValue (), 0 );
162+ field .setValue (new Double (23.4 ));
163+ assertEquals (11 , field .getTag ());
164+ assertEquals (23.4 , field .getValue (), 0 );
165+ field = new DoubleField (22 , 34.5 );
166+ assertEquals (22 , field .getTag ());
167+ assertEquals (34.5 , field .getValue (), 0 );
168+ field = new DoubleField (33 , new Double (45.6 ));
169+ assertEquals (33 , field .getTag ());
170+ assertEquals (45.6 , field .getValue (), 0 );
171+ }
172+
173+ @ Test (expected = NumberFormatException .class )
174+ public void testDoubleFieldException () {
175+ DoubleField field = new DoubleField (11 , Double .NaN );
176+ }
177+
178+ @ Test
179+ public void testDecimalField () {
180+ DecimalField field = new DecimalField (11 );
181+ field .setValue (12.3 );
182+ assertEquals (11 , field .getTag ());
183+ assertEquals (BigDecimal .valueOf (12.3 ), field .getValue ());
184+ field .setValue (23.4 );
185+ assertEquals (11 , field .getTag ());
186+ assertEquals (BigDecimal .valueOf (23.4 ), field .getValue ());
187+ field = new DecimalField (22 , 34.5 );
188+ assertEquals (22 , field .getTag ());
189+ assertEquals (BigDecimal .valueOf (34.5 ), field .getValue ());
190+ field = new DecimalField (33 , 45.6 );
191+ assertEquals (33 , field .getTag ());
192+ assertEquals (BigDecimal .valueOf (45.6 ), field .getValue ());
193+ }
194+
195+ @ Test (expected = NumberFormatException .class )
196+ public void testDecimalFieldException () {
197+ DecimalField field = new DecimalField (11 , Double .POSITIVE_INFINITY );
198+ }
199+
200+ @ Test
201+ public void testCharField () {
202+ CharField field = new CharField (11 );
203+ field .setValue ('x' );
204+ assertEquals (11 , field .getTag ());
205+ assertEquals ('x' , field .getValue ());
206+ field .setValue (Character .valueOf ('X' ));
207+ assertEquals (11 , field .getTag ());
208+ assertEquals ('X' , field .getValue ());
209+ field = new CharField (22 , 'a' );
210+ assertEquals (22 , field .getTag ());
211+ assertEquals ('a' , field .getValue ());
212+ field = new CharField (33 , Character .valueOf ('A' ));
213+ assertEquals (33 , field .getTag ());
214+ assertEquals ('A' , field .getValue ());
215+ }
216+
217+ @ Test
218+ public void testIntField () {
219+ IntField field = new IntField (11 );
220+ field .setValue (12 );
221+ assertEquals (11 , field .getTag ());
222+ assertEquals (12 , field .getValue ());
223+ field .setValue (Integer .valueOf (23 ));
224+ assertEquals (11 , field .getTag ());
225+ assertEquals (23 , field .getValue ());
226+ field = new IntField (22 , 23 );
227+ assertEquals (22 , field .getTag ());
228+ assertEquals (23 , field .getValue ());
229+ field = new IntField (33 , Integer .valueOf (44 ));
230+ assertEquals (33 , field .getTag ());
231+ assertEquals (44 , field .getValue ());
232+ }
233+
55234 @ Test
56235 public void testBytesField () {
57236 byte [] data = "rawdata" .getBytes ();
0 commit comments