Skip to content

Commit 273c471

Browse files
committed
vtype-json: adding support for all unsigned array integers
1 parent 4f8cf89 commit 273c471

8 files changed

Lines changed: 817 additions & 707 deletions

File tree

epics-vtype/vtype-json/src/main/java/org/epics/vtype/json/JsonArrays.java

Lines changed: 326 additions & 259 deletions
Large diffs are not rendered by default.

epics-vtype/vtype-json/src/main/java/org/epics/vtype/json/VTypeJsonMapper.java

Lines changed: 347 additions & 324 deletions
Large diffs are not rendered by default.

epics-vtype/vtype-json/src/main/java/org/epics/vtype/json/VTypeToJsonV1.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,13 @@ static VType toVType(JsonObject json) {
3939
return toVNumber(json);
4040
case "VDoubleArray":
4141
case "VFloatArray":
42+
case "VULongArray":
4243
case "VLongArray":
44+
case "VUIntArray":
4345
case "VIntArray":
46+
case "VUShortArray":
4447
case "VShortArray":
48+
case "VUByteArray":
4549
case "VByteArray":
4650
return toVNumberArray(json);
4751
case "VString":
@@ -135,15 +139,27 @@ static VNumberArray toVNumberArray(JsonObject json) {
135139
case "VFloatArray":
136140
value = mapper.getListFloat("value");
137141
break;
142+
case "VULongArray":
143+
value = mapper.getListULong("value");
144+
break;
138145
case "VLongArray":
139146
value = mapper.getListLong("value");
140147
break;
148+
case "VUIntArray":
149+
value = mapper.getListUInteger("value");
150+
break;
141151
case "VIntArray":
142152
value = mapper.getListInt("value");
143153
break;
154+
case "VUShortArray":
155+
value = mapper.getListUShort("value");
156+
break;
144157
case "VShortArray":
145158
value = mapper.getListShort("value");
146159
break;
160+
case "VUByteArray":
161+
value = mapper.getListUByte("value");
162+
break;
147163
case "VByteArray":
148164
value = mapper.getListByte("value");
149165
break;

epics-vtype/vtype-json/src/test/java/org/epics/vtype/json/VTypeToJsonTest.java

Lines changed: 36 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
import org.epics.util.array.ArrayInteger;
2323
import org.epics.util.array.ArrayLong;
2424
import org.epics.util.array.ArrayShort;
25+
import org.epics.util.array.ArrayUByte;
26+
import org.epics.util.array.ArrayUInteger;
27+
import org.epics.util.array.ArrayULong;
28+
import org.epics.util.array.ArrayUShort;
2529
import org.epics.util.number.UByte;
2630
import org.epics.util.number.UInteger;
2731
import org.epics.util.number.ULong;
@@ -48,9 +52,13 @@
4852
import org.epics.vtype.VString;
4953
import org.epics.vtype.VType;
5054
import org.epics.vtype.VUByte;
55+
import org.epics.vtype.VUByteArray;
5156
import org.epics.vtype.VUInt;
57+
import org.epics.vtype.VUIntArray;
5258
import org.epics.vtype.VULong;
59+
import org.epics.vtype.VULongArray;
5360
import org.epics.vtype.VUShort;
61+
import org.epics.vtype.VUShortArray;
5462
import org.junit.Test;
5563
import static org.junit.Assert.*;
5664
import static org.hamcrest.Matchers.*;
@@ -130,37 +138,6 @@ public static void saveErrorJson(JsonObject json, File jsonFile) {
130138
}
131139
}
132140

133-
// public VBooleanArray vBooleanArray = newVBooleanArray(new ArrayBoolean(true, false, true), Alarm.none(), Time.create(Instant.ofEpochSecond(0, 0)));
134-
// of String vBooleanArrayJson = "{\"type\":{\"name\":\"VBooleanArray\",\"version\":1},"
135-
// + "\"value\":[true,false,true],"
136-
// + "\"alarm\":{\"severity\":\"NONE\",\"status\":\"None\"},"
137-
// + "\"time\":{\"unixSec\":0,\"nanoSec\":0,\"userTag\":null}}";
138-
// public VStringArray vStringArray = newVStringArray(Arrays.asList("A", "B", "C"), Alarm.none(), Time.create(Instant.ofEpochSecond(0, 0)));
139-
// publofing vStringArrayJson = "{\"type\":{\"name\":\"VStringArray\",\"version\":1},"
140-
// + "\"value\":[\"A\",\"B\",\"C\"],"
141-
// + "\"alarm\":{\"severity\":\"NONE\",\"status\":\"None\"},"
142-
// + "\"time\":{\"unixSec\":0,\"nanoSec\":0,\"userTag\":null}}";
143-
// public VEnumArray vEnumArray = newVEnumArray(new ArrayInteger(1,0,1), Arrays.asList("One", "Two", "Three"), Alarm.none(), Time.create(Instant.ofEpochSecond(0, 0)));
144-
// public SofvEnumArrayJson = "{\"type\":{\"name\":\"VEnumArray\",\"version\":1},"
145-
// + "\"value\":[1,0,1],\"alarm\":{\"severity\":\"NONE\",\"status\":\"None\"},"
146-
// + "\"time\":{\"unixSec\":0,\"nanoSec\":0,\"userTag\":null},"
147-
// + "\"enum\":{\"labels\":[\"One\",\"Two\",\"Three\"]}}";
148-
// public VTable vTable = newVTable(Arrays.<Class<?>>asList(String.class, int.class, double.class), Arrays.asList("Name", "Index", "Value"), Arrays.asList(Arrays.asList("A", "B", "C"), new ArrayInteger(1,2,3), new ArrayDouble(3.14, 1.25, -0.1)));
149-
// public String vTableJson = "{\"type\":{\"name\":\"VTable\",\"version\":1},"
150-
// + "\"columnNames\":[\"Name\",\"Index\",\"Value\"],"
151-
// + "\"columnTypes\":[\"String\",\"int\",\"double\"],"
152-
// + "\"columnValues\":[[\"A\",\"B\",\"C\"],[1,2,3],[3.14,1.25,-0.1]]}";
153-
// public VTable vTable2 = newVTable(Arrays.<Class<?>>asList(String.class, int.class, double.class, Timestamp.class), Arrays.asList("Name", "Index", "Value", "Timestamp"), Arrays.asList(Arrays.asList("A", "B", "C"), new ArrayInteger(1,2,3), new ArrayDouble(3.14, 1.25, -0.1), Arrays.asList(Instant.ofEpochSecond(1234, 0), Instant.ofEpochSecond(2345, 0), Instant.ofEpochSecond(3456, 0))));
154-
// public String vTable2Json = "{\"type\":{\"name\":\"VTable\",\"version\":1},"
155-
// + "\"columnNames\":[\"Name\",\"Index\",\"Value\",\"Timestamp\"],"
156-
// + "\"columnTypes\":[\"String\",\"int\",\"double\",\"Timestamp\"],"
157-
// + "\"columnValues\":[[\"A\",\"B\",\"C\"],[1,2,3],[3.14,1.25,-0.1],[1234000,2345000,3456000]]}";
158-
// public VTable vTable3 = newVTable(Arrays.<Class<?>>asList(String.class, int.class, double.class, Timestamp.class), Arrays.asList("Name", "Index", "Value", "Timestamp"), Arrays.asList(Arrays.asList(null, "B", "C"), new ArrayInteger(1,2,3), new ArrayDouble(Double.NaN, 1.25, -0.1), Arrays.asList(Instant.ofEpochSecond(1234, 0), null, Instant.ofEpochSecond(3456, 123000000))));
159-
// public String vTable3Json = "{\"type\":{\"name\":\"VTable\",\"version\":1},"
160-
// + "\"columnNames\":[\"Name\",\"Index\",\"Value\",\"Timestamp\"],"
161-
// + "\"columnTypes\":[\"String\",\"int\",\"double\",\"Timestamp\"],"
162-
// + "\"columnValues\":[[\"\",\"B\",\"C\"],[1,2,3],[null,1.25,-0.1],[1234000,null,3456123]]}";
163-
164141
@Test
165142
public void vDouble1() {
166143
VDouble vDouble1 = VDouble.of(3.14, Alarm.of(AlarmSeverity.MINOR, AlarmStatus.DB, "LOW"), Time.of(Instant.ofEpochSecond(0, 0)), Display.none());
@@ -269,126 +246,61 @@ public void vFloatArray1() {
269246
testDeserialization("VFloatArray1a", vFloatArray1);
270247
}
271248

249+
@Test
250+
public void vULongArray1() {
251+
VULongArray vULongArray1 = VULongArray.of(ArrayULong.of(-1, -2, -3), Alarm.none(), Time.of(Instant.ofEpochSecond(0, 0)), Display.none());
252+
testSerialization(vULongArray1, "VULongArray1");
253+
testDeserialization("VULongArray1", vULongArray1);
254+
}
255+
272256
@Test
273257
public void vLongArray1() {
274258
VLongArray vLongArray1 = VLongArray.of(ArrayLong.of(0, 1, 2), Alarm.none(), Time.of(Instant.ofEpochSecond(0, 0)), Display.none());
275259
testSerialization(vLongArray1, "VLongArray1");
276260
testDeserialization("VLongArray1", vLongArray1);
277261
}
278262

263+
@Test
264+
public void vUIntArray1() {
265+
VUIntArray vUIntArray1 = VUIntArray.of(ArrayUInteger.of(-1, -2, -3), Alarm.none(), Time.of(Instant.ofEpochSecond(0, 0)), Display.none());
266+
testSerialization(vUIntArray1, "VUIntArray1");
267+
testDeserialization("VUIntArray1", vUIntArray1);
268+
}
269+
279270
@Test
280271
public void vIntArray1() {
281272
VIntArray vIntArray1 = VIntArray.of(ArrayInteger.of(0, 1, 2), Alarm.none(), Time.of(Instant.ofEpochSecond(0, 0)), Display.none());
282273
testSerialization(vIntArray1, "VIntArray1");
283274
testDeserialization("VIntArray1", vIntArray1);
284275
}
285276

277+
@Test
278+
public void vUShortArray1() {
279+
VUShortArray vUShortArray1 = VUShortArray.of(ArrayUShort.of(new short[] {-1, -2, -3}), Alarm.none(), Time.of(Instant.ofEpochSecond(0, 0)), Display.none());
280+
testSerialization(vUShortArray1, "VUShortArray1");
281+
testDeserialization("VUShortArray1", vUShortArray1);
282+
}
283+
286284
@Test
287285
public void vShortArray1() {
288286
VShortArray vShortArray1 = VShortArray.of(ArrayShort.of(new short[] {0, 1, 2}), Alarm.none(), Time.of(Instant.ofEpochSecond(0, 0)), Display.none());
289287
testSerialization(vShortArray1, "VShortArray1");
290288
testDeserialization("VShortArray1", vShortArray1);
291289
}
292290

291+
@Test
292+
public void vUByteArray1() {
293+
VUByteArray vUByteArray1 = VUByteArray.of(ArrayUByte.of(new byte[] {-1, -2, -3}), Alarm.none(), Time.of(Instant.ofEpochSecond(0, 0)), Display.none());
294+
testSerialization(vUByteArray1, "VUByteArray1");
295+
testDeserialization("VUByteArray1", vUByteArray1);
296+
}
297+
293298
@Test
294299
public void vByteArray1() {
295300
VByteArray vByteArray1 = VByteArray.of(ArrayByte.of(new byte[] {0, 1, 2}), Alarm.none(), Time.of(Instant.ofEpochSecond(0, 0)), Display.none());
296301
testSerialization(vByteArray1, "VByteArray1");
297302
testDeserialization("VByteArray1", vByteArray1);
298303
testDeserialization("VByteArray1a", vByteArray1);
299304
}
300-
301-
// @Test
302-
// public void serializeVBoolean() {
303-
// compareJson(VTypeToJson.toJson(vBoolean), vBooleanJson);
304-
// }
305-
306-
//
307-
// @Test
308-
// public void serializeVBooleanArray() {
309-
// compareJson(VTypeToJson.toJson(vBooleanArray), vBooleanArrayJson);
310-
// }
311-
//
312-
// @Test
313-
// public void serializeVStringArray() {
314-
// compareJson(VTypeToJson.toJson(vStringArray), vStringArrayJson);
315-
// }
316-
//
317-
// @Test
318-
// public void serializeVEnumArray() {
319-
// compareJson(VTypeToJson.toJson(vEnumArray), vEnumArrayJson);
320-
// }
321-
//
322-
// @Test
323-
// public void serializeVTable1() {
324-
// compareJson(VTypeToJson.toJson(vTable), vTableJson);
325-
// }
326-
//
327-
// @Test
328-
// public void serializeVTable2() {
329-
// compareJson(VTypeToJson.toJson(vTable2), vTable2Json);
330-
// }
331-
//
332-
// @Test
333-
// public void serializeVTable3() {
334-
// compareJson(VTypeToJson.toJson(vTable3), vTable3Json);
335-
// }
336-
337-
338-
// @Test
339-
// public void parseVBoolean() {
340-
// compareVType(vBoolean, VTypeToJson.toVType(parseJson(vBooleanJson)));
341-
// }
342-
343-
344-
// @Test
345-
// public void parseVFloatArray() {
346-
// compareVType(vFloatArray, VTypeToJson.toVType(parseJson(vFloatArrayJson)));
347-
// }
348-
//
349-
// @Test
350-
// public void parseVLongArray() {
351-
// compareVType(vLongArray, VTypeToJson.toVType(parseJson(vLongArrayJson)));
352-
// }
353-
//
354-
// @Test
355-
// public void parseVIntArray() {
356-
// compareVType(vIntArray, VTypeToJson.toVType(parseJson(vIntArrayJson)));
357-
// }
358-
//
359-
// @Test
360-
// public void parseVShortArray() {
361-
// compareVType(vShortArray, VTypeToJson.toVType(parseJson(vShortArrayJson)));
362-
// }
363-
//
364-
// @Test
365-
// public void parseVByteArray() {
366-
// compareVType(vByteArray, VTypeToJson.toVType(parseJson(vByteArrayJson)));
367-
// }
368-
//
369-
// @Test
370-
// public void parseVBooleanArray() {
371-
// compareVType(vBooleanArray, VTypeToJson.toVType(parseJson(vBooleanArrayJson)));
372-
// }
373-
//
374-
// @Test
375-
// public void parseVStringArray() {
376-
// compareVType(vStringArray, VTypeToJson.toVType(parseJson(vStringArrayJson)));
377-
// }
378-
//
379-
// @Test
380-
// public void parseVEnumArray() {
381-
// compareVType(vEnumArray, VTypeToJson.toVType(parseJson(vEnumArrayJson)));
382-
// }
383-
//
384-
// @Test
385-
// public void parseVTable() {
386-
// compareVType(vTable, VTypeToJson.toVType(parseJson(vTableJson)));
387-
// }
388-
//
389-
// @Test
390-
// public void parseVTable2() {
391-
// compareVType(vTable2, VTypeToJson.toVType(parseJson(vTable2Json)));
392-
// }
393305

394306
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"type":{
3+
"name":"VUByteArray",
4+
"version":1
5+
},
6+
"value":[
7+
255,
8+
254,
9+
253
10+
],
11+
"alarm":{
12+
"severity":"NONE",
13+
"status":"NONE",
14+
"name":"None"
15+
},
16+
"time":{
17+
"unixSec":0,
18+
"nanoSec":0
19+
},
20+
"display":{
21+
"units":""
22+
}
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"type":{
3+
"name":"VUIntArray",
4+
"version":1
5+
},
6+
"value":[
7+
4294967295,
8+
4294967294,
9+
4294967293
10+
],
11+
"alarm":{
12+
"severity":"NONE",
13+
"status":"NONE",
14+
"name":"None"
15+
},
16+
"time":{
17+
"unixSec":0,
18+
"nanoSec":0
19+
},
20+
"display":{
21+
"units":""
22+
}
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"type":{
3+
"name":"VULongArray",
4+
"version":1
5+
},
6+
"value":[
7+
18446744073709551615,
8+
18446744073709551614,
9+
18446744073709551613
10+
],
11+
"alarm":{
12+
"severity":"NONE",
13+
"status":"NONE",
14+
"name":"None"
15+
},
16+
"time":{
17+
"unixSec":0,
18+
"nanoSec":0
19+
},
20+
"display":{
21+
"units":""
22+
}
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"type":{
3+
"name":"VUShortArray",
4+
"version":1
5+
},
6+
"value":[
7+
65535,
8+
65534,
9+
65533
10+
],
11+
"alarm":{
12+
"severity":"NONE",
13+
"status":"NONE",
14+
"name":"None"
15+
},
16+
"time":{
17+
"unixSec":0,
18+
"nanoSec":0
19+
},
20+
"display":{
21+
"units":""
22+
}
23+
}

0 commit comments

Comments
 (0)