1+ /**
2+ * Copyright (C) 2010-18 epics and diirt developers. See COPYRIGHT.TXT
3+ * All rights reserved. Use is subject to license terms. See LICENSE.TXT
4+ */
5+ package org .epics .vtype ;
6+
7+ import static org .hamcrest .CoreMatchers .equalTo ;
8+ import static org .junit .Assert .assertThat ;
9+
10+ import java .util .Arrays ;
11+ import java .util .List ;
12+
13+ import org .epics .util .array .ArrayByte ;
14+ import org .epics .util .array .ArrayDouble ;
15+ import org .epics .util .array .ArrayFloat ;
16+ import org .epics .util .array .ArrayInteger ;
17+ import org .epics .util .array .ArrayShort ;
18+ import org .epics .util .array .ListByte ;
19+ import org .epics .util .array .ListDouble ;
20+ import org .epics .util .array .ListFloat ;
21+ import org .epics .util .stats .Range ;
22+ import org .epics .util .text .NumberFormats ;
23+ import org .junit .Test ;
24+ import org .mockito .Mockito ;
25+
26+ /**
27+ *
28+ * @author carcassi
29+ */
30+ public class SimpleValueFormatTest {
31+ Range maxDoubleRange = Range .of (Double .MIN_VALUE , Double .MAX_VALUE );
32+ Display display = Display .of (maxDoubleRange , maxDoubleRange , maxDoubleRange , maxDoubleRange , "" ,
33+ NumberFormats .precisionFormat (3 ));
34+
35+ Display displayInt = Display .of (maxDoubleRange , maxDoubleRange , maxDoubleRange , maxDoubleRange , "" ,
36+ NumberFormats .precisionFormat (0 ));
37+
38+ @ Test
39+ public void defaultPrecision () {
40+ ValueFormat f = new SimpleValueFormat (3 );
41+ assertThat (f .format (VDouble .of (1234.5678 , Alarm .none (), Time .now (), display )), equalTo ("1234.568" ));
42+ assertThat (f .format (VIntArray .of (ArrayInteger .of (1 , 2 , 3 ), Alarm .none (), Time .now (), displayInt )), equalTo ("[1, 2, 3]" ));
43+ assertThat (f .format (VIntArray .of (ArrayInteger .of (1 ), Alarm .none (), Time .now (), displayInt )), equalTo ("[1]" ));
44+ assertThat (f .format (VIntArray .of (ArrayInteger .of (1 , 2 , 3 , 4 , 5 ), Alarm .none (), Time .now (), displayInt )), equalTo ("[1, 2, 3, ...]" ));
45+ assertThat (f .format (VFloatArray .of (ArrayFloat .of (new float [] {1 , 2 , 3 }), Alarm .none (), Time .now (), display )), equalTo ("[1.000, 2.000, 3.000]" ));
46+ assertThat (f .format (VFloatArray .of (ArrayFloat .of (new float [] {1 }), Alarm .none (), Time .now (), display )), equalTo ("[1.000]" ));
47+ assertThat (f .format (VFloatArray .of (ArrayFloat .of (new float [] {1 , 2 , 3 , 4 , 5 }), Alarm .none (), Time .now (), display )), equalTo ("[1.000, 2.000, 3.000, ...]" ));
48+ assertThat (f .format (VDoubleArray .of (ArrayDouble .of (1 , 2 , 3 ), Alarm .none (), Time .now (), display )), equalTo ("[1.000, 2.000, 3.000]" ));
49+ assertThat (f .format (VDoubleArray .of (ArrayDouble .of (1 ), Alarm .none (), Time .now (), display )), equalTo ("[1.000]" ));
50+ assertThat (f .format (VDoubleArray .of (ArrayDouble .of (1 , 2 , 3 , 4 , 5 ), Alarm .none (), Time .now (), display )), equalTo ("[1.000, 2.000, 3.000, ...]" ));
51+ assertThat (f .format (VStringArray .of (Arrays .asList ("A" , "B" , "C" ), Alarm .none (), Time .now ())), equalTo ("[A, B, C]" ));
52+ assertThat (f .format (VStringArray .of (Arrays .asList ("A" ), Alarm .none (), Time .now ())), equalTo ("[A]" ));
53+ assertThat (f .format (VStringArray .of (Arrays .asList ("A" , "B" , "C" , "D" , "E" ), Alarm .none (), Time .now ())), equalTo ("[A, B, C, ...]" ));
54+ // assertThat(f.format(newVEnumArray(ArrayInteger.of(2, 0, 0), Arrays.asList("A", "B", "C"), Alarm.none(), Time.now())), equalTo("[C, A, A]"));
55+ // assertThat(f.format(newVEnumArray(ArrayInteger.of(2), Arrays.asList("A", "B", "C"), Alarm.none(), Time.now())), equalTo("[C]"));
56+ // assertThat(f.format(newVEnumArray(ArrayInteger.of(2, 0, 0, 1, 0), Arrays.asList("A", "B", "C"), Alarm.none(), Time.now())), equalTo("[C, A, A, ...]"));
57+ }
58+
59+ @ Test
60+ public void testMandatedPrecision () {
61+ ValueFormat f = new SimpleValueFormat (3 );
62+ f .setNumberFormat (NumberFormats .precisionFormat (2 ));
63+ assertThat (f .format (VDouble .of (1234.5678 , Alarm .none (), Time .now (), display )), equalTo ("1234.57" ));
64+ assertThat (f .format (VIntArray .of (ArrayInteger .of (1 , 2 , 3 ), Alarm .none (), Time .now (), displayInt )), equalTo ("[1.00, 2.00, 3.00]" ));
65+ assertThat (f .format (VIntArray .of (ArrayInteger .of (1 ), Alarm .none (), Time .now (), displayInt )), equalTo ("[1.00]" ));
66+ assertThat (f .format (VIntArray .of (ArrayInteger .of (1 , 2 , 3 , 4 , 5 ), Alarm .none (), Time .now (), displayInt )), equalTo ("[1.00, 2.00, 3.00, ...]" ));
67+ assertThat (f .format (VFloatArray .of (ArrayFloat .of (new float [] {1 , 2 , 3 }), Alarm .none (), Time .now (), display )), equalTo ("[1.00, 2.00, 3.00]" ));
68+ assertThat (f .format (VFloatArray .of (ArrayFloat .of (new float [] {1 }), Alarm .none (), Time .now (), display )), equalTo ("[1.00]" ));
69+ assertThat (f .format (VFloatArray .of (ArrayFloat .of (new float [] {1 , 2 , 3 , 4 , 5 }), Alarm .none (), Time .now (), display )), equalTo ("[1.00, 2.00, 3.00, ...]" ));
70+ assertThat (f .format (VDoubleArray .of (ArrayDouble .of (1 , 2 , 3 ), Alarm .none (), Time .now (), display )), equalTo ("[1.00, 2.00, 3.00]" ));
71+ assertThat (f .format (VDoubleArray .of (ArrayDouble .of (1 ), Alarm .none (), Time .now (), display )), equalTo ("[1.00]" ));
72+ assertThat (f .format (VDoubleArray .of (ArrayDouble .of (1 , 2 , 3 , 4 , 5 ), Alarm .none (), Time .now (), display )), equalTo ("[1.00, 2.00, 3.00, ...]" ));
73+ assertThat (f .format (VStringArray .of (Arrays .asList ("A" , "B" , "C" ), Alarm .none (), Time .now ())), equalTo ("[A, B, C]" ));
74+ assertThat (f .format (VStringArray .of (Arrays .asList ("A" ), Alarm .none (), Time .now ())), equalTo ("[A]" ));
75+ assertThat (f .format (VStringArray .of (Arrays .asList ("A" , "B" , "C" , "D" , "E" ), Alarm .none (), Time .now ())), equalTo ("[A, B, C, ...]" ));
76+ }
77+
78+ @ Test
79+ public void parseVDouble1 () {
80+ ValueFormat f = new SimpleValueFormat (3 );
81+ VDouble reference = VDouble .of (3.0 , Alarm .none (), Time .now (), Display .none ());
82+ assertThat (f .parseObject ("3.14" , reference ), equalTo ((Object ) 3.14 ));
83+ assertThat (f .parseDouble ("3.14" ), equalTo (3.14 ));
84+ assertThat (f .parseDouble ("1333" ), equalTo (1333.0 ));
85+ }
86+
87+ @ Test
88+ public void parseVFloat1 () {
89+ ValueFormat f = new SimpleValueFormat (3 );
90+ VFloat reference = Mockito .mock (VFloat .class );
91+ assertThat (f .parseObject ("3.14" , reference ), equalTo ((Object ) 3.14f ));
92+ assertThat (f .parseFloat ("3.14" ), equalTo (3.14f ));
93+ assertThat (f .parseFloat ("1333" ), equalTo (1333.0f ));
94+ }
95+
96+ @ Test
97+ public void parseVInt1 () {
98+ ValueFormat f = new SimpleValueFormat (3 );
99+ VInt reference = Mockito .mock (VInt .class );
100+ assertThat (f .parseObject ("314" , reference ), equalTo ((Object ) 314 ));
101+ assertThat (f .parseInt ("314" ), equalTo (314 ));
102+ assertThat (f .parseInt ("1333" ), equalTo (1333 ));
103+ }
104+
105+ @ Test
106+ public void parseVShort1 () {
107+ ValueFormat f = new SimpleValueFormat (3 );
108+ VShort reference = Mockito .mock (VShort .class );
109+ assertThat (f .parseObject ("314" , reference ), equalTo ((Object ) (short ) 314 ));
110+ assertThat (f .parseShort ("314" ), equalTo ((short ) 314 ));
111+ assertThat (f .parseShort ("1333" ), equalTo ((short ) 1333 ));
112+ }
113+
114+ @ Test
115+ public void parseVByte1 () {
116+ ValueFormat f = new SimpleValueFormat (3 );
117+ VByte reference = Mockito .mock (VByte .class );
118+ assertThat (f .parseObject ("23" , reference ), equalTo ((Object ) (byte ) 23 ));
119+ assertThat (f .parseByte ("23" ), equalTo ((byte ) 23 ));
120+ assertThat (f .parseByte ("112" ), equalTo ((byte ) 112 ));
121+ }
122+
123+ @ Test
124+ public void parseVString1 () {
125+ ValueFormat f = new SimpleValueFormat (3 );
126+ VString reference = Mockito .mock (VString .class );
127+ assertThat (f .parseObject ("Testing" , reference ), equalTo ((Object ) "Testing" ));
128+ assertThat (f .parseString ("Testing" ), equalTo ("Testing" ));
129+ assertThat (f .parseString ("Foo" ), equalTo ("Foo" ));
130+ }
131+
132+ @ Test
133+ public void parseVEnum1 () {
134+ ValueFormat f = new SimpleValueFormat (3 );
135+ List <String > labels = Arrays .asList ("A" , "B" , "C" );
136+ VEnum reference = VEnum .of (0 , EnumDisplay .of (labels ), Alarm .none (), Time .now ());
137+ assertThat (f .parseObject ("A" , reference ), equalTo ((Object ) 0 ));
138+ assertThat (f .parseEnum ("A" , labels ), equalTo (0 ));
139+ assertThat (f .parseEnum ("B" , labels ), equalTo (1 ));
140+ }
141+
142+ @ Test
143+ public void parseVDoubleArray1 () {
144+ ValueFormat f = new SimpleValueFormat (3 );
145+ VDoubleArray reference = Mockito .mock (VDoubleArray .class );
146+ assertThat (f .parseObject ("3.14" , reference ), equalTo ((Object ) ArrayDouble .of (3.14 )));
147+ assertThat (f .parseDoubleArray ("3.14" ), equalTo ((ListDouble ) ArrayDouble .of (3.14 )));
148+ assertThat (f .parseDoubleArray ("1333, 3.14" ), equalTo ((ListDouble ) ArrayDouble .of (1333 , 3.14 )));
149+ assertThat (f .parseDoubleArray ("1.0, 2.0, 3.0, 4.0" ), equalTo ((ListDouble ) ArrayDouble .of (1.0 , 2.0 , 3.0 , 4.0 )));
150+ }
151+
152+ @ Test
153+ public void parseVFloatArray1 () {
154+ ValueFormat f = new SimpleValueFormat (3 );
155+ VFloatArray reference = Mockito .mock (VFloatArray .class );
156+ assertThat (f .parseObject ("3.14" , reference ), equalTo ((Object ) ArrayFloat .of (3.14f )));
157+ assertThat (f .parseFloatArray ("3.14" ), equalTo ((ListFloat ) ArrayFloat .of (3.14f )));
158+ assertThat (f .parseFloatArray ("1333, 3.14" ), equalTo ((ListFloat ) ArrayFloat .of (1333f , 3.14f )));
159+ assertThat (f .parseFloatArray ("1.0, 2.0, 3.0, 4.0" ), equalTo ((ListFloat ) ArrayFloat .of (1.0f , 2.0f , 3.0f , 4.0f )));
160+ }
161+
162+ @ Test
163+ public void parseVIntArray1 () {
164+ ValueFormat f = new SimpleValueFormat (3 );
165+ VIntArray reference = Mockito .mock (VIntArray .class );
166+ assertThat (f .parseObject ("3" , reference ), equalTo ((Object ) ArrayInteger .of (3 )));
167+ assertThat (f .parseIntArray ("3" ), equalTo (ArrayInteger .of (3 )));
168+ assertThat (f .parseIntArray ("1333, 3" ), equalTo (ArrayInteger .of (1333 , 3 )));
169+ assertThat (f .parseIntArray ("1, 2, 3, 4" ), equalTo (ArrayInteger .of (1 , 2 , 3 , 4 )));
170+ }
171+
172+ @ Test
173+ public void parseVShortArray1 () {
174+ ValueFormat f = new SimpleValueFormat (3 );
175+ VShortArray reference = Mockito .mock (VShortArray .class );
176+ assertThat (f .parseObject ("3" , reference ), equalTo ((Object ) ArrayShort .of ((short ) 3 )));
177+ assertThat (f .parseShortArray ("3" ), equalTo (ArrayShort .of ((short ) 3 )));
178+ assertThat (f .parseShortArray ("1333, 3" ), equalTo (ArrayShort .of (new short []{1333 , 3 })));
179+ assertThat (f .parseShortArray ("1, 2, 3, 4" ), equalTo (ArrayShort .of (new short []{1 , 2 , 3 , 4 })));
180+ }
181+
182+ @ Test
183+ public void parseVByteArray1 () {
184+ ValueFormat f = new SimpleValueFormat (3 );
185+ VByteArray reference = Mockito .mock (VByteArray .class );
186+ assertThat (f .parseObject ("3" , reference ), equalTo ((Object ) ArrayByte .of (new byte [] {3 })));
187+ assertThat (f .parseByteArray ("3" ), equalTo ((ListByte ) ArrayByte .of (new byte [] {3 })));
188+ assertThat (f .parseByteArray ("113, 3" ), equalTo ((ListByte ) ArrayByte .of (new byte [] {113 , 3 })));
189+ assertThat (f .parseByteArray ("1, 2, 3, 4" ), equalTo ((ListByte ) ArrayByte .of (new byte [] {1 , 2 , 3 , 4 })));
190+ }
191+
192+ @ Test
193+ public void parseVStringArray1 () {
194+ ValueFormat f = new SimpleValueFormat (3 );
195+ VStringArray reference = Mockito .mock (VStringArray .class );
196+ assertThat (f .parseObject ("test" , reference ), equalTo ((Object ) Arrays .asList ("test" )));
197+ assertThat (f .parseStringArray ("test" ), equalTo (Arrays .asList ("test" )));
198+ assertThat (f .parseStringArray ("a, b" ), equalTo (Arrays .asList ("a" , "b" )));
199+ assertThat (f .parseStringArray ("a, b, c, d" ), equalTo (Arrays .asList ("a" , "b" , "c" , "d" )));
200+ }
201+
202+ // @Test
203+ // public void parseVEnumArray1() {
204+ // ValueFormat f = new SimpleValueFormat(3);
205+ // List<String> labels = Arrays.asList("A", "B", "C");
206+ // VEnumArray reference = newVEnumArray(ArrayInteger.of(1), labels, Alarm.none(), Time.now());
207+ // assertThat(f.parseObject("A", reference), equalTo((Object) ArrayInteger.of(0)));
208+ // assertThat(f.parseEnumArray("A", labels), equalTo((ListInt) ArrayInteger.of(0)));
209+ // assertThat(f.parseEnumArray("B, A", labels), equalTo((ListInt) ArrayInteger.of(1, 0)));
210+ // assertThat(f.parseEnumArray("B, A, C,A", labels), equalTo((ListInt) ArrayInteger.of(1, 0, 2, 0)));
211+ // }
212+
213+ }
0 commit comments