Skip to content

Commit b433f2e

Browse files
committed
vtype: adding equals/hashCode for VNumberArray
1 parent d170732 commit b433f2e

12 files changed

Lines changed: 483 additions & 370 deletions

epics-vtype/vtype/src/main/java/org/epics/vtype/VNumberArray.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package org.epics.vtype;
66

7+
import java.util.Objects;
78
import org.epics.util.array.ListByte;
89
import org.epics.util.array.ListDouble;
910
import org.epics.util.array.ListFloat;
@@ -124,5 +125,34 @@ public static VNumberArray of(ListNumber data, ListInteger sizes, Alarm alarm, T
124125
}
125126
throw new UnsupportedOperationException();
126127
}
128+
129+
@Override
130+
public final boolean equals(Object obj) {
131+
if (this == obj) {
132+
return true;
133+
}
134+
135+
if (obj instanceof VNumberArray) {
136+
VNumberArray other = (VNumberArray) obj;
137+
138+
return getClass().equals(other.getClass()) &&
139+
getData().equals(other.getData()) &&
140+
getAlarm().equals(other.getAlarm()) &&
141+
getTime().equals(other.getTime()) &&
142+
getDisplay().equals(other.getDisplay());
143+
}
144+
145+
return false;
146+
}
147+
148+
@Override
149+
public final int hashCode() {
150+
int hash = 7;
151+
hash = 23 * hash + Objects.hashCode(getData());
152+
hash = 23 * hash + Objects.hashCode(getAlarm());
153+
hash = 23 * hash + Objects.hashCode(getTime());
154+
hash = 23 * hash + Objects.hashCode(getDisplay());
155+
return hash;
156+
}
127157

128158
}

epics-vtype/vtype/src/test/java/org/epics/vtype/FeatureTestVNumberArray.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
*/
55
package org.epics.vtype;
66

7+
import java.text.DecimalFormat;
78
import java.time.Instant;
89
import org.epics.util.array.ArrayInteger;
910
import org.epics.util.array.ListInteger;
1011
import org.epics.util.array.ListNumber;
12+
import org.epics.util.stats.Range;
1113
import org.junit.Test;
1214
import static org.junit.Assert.*;
1315
import static org.hamcrest.Matchers.*;
@@ -22,6 +24,8 @@ public abstract class FeatureTestVNumberArray<L extends ListNumber, V extends VN
2224

2325
abstract L getData();
2426

27+
abstract L getOtherData();
28+
2529
abstract V of(L data, Alarm alarm, Time time, Display display);
2630

2731
abstract V of(L data, ListInteger sizes, Alarm alarm, Time time, Display display);
@@ -110,4 +114,31 @@ public void of10() {
110114
of(getData(), null, Alarm.none(), Time.now(), Display.none());
111115
}
112116

117+
@Test
118+
public void equals1() {
119+
Alarm alarm = Alarm.of(AlarmSeverity.MINOR, AlarmStatus.DB, "LOW");
120+
Time time = Time.of(Instant.ofEpochSecond(1354719441, 521786982));
121+
Time now = Time.now();
122+
assertThat(of(getData(), alarm, time, Display.none()), equalTo(of(getData(), alarm, time, Display.none())));
123+
assertThat(of(getOtherData(), Alarm.none(), now, Display.none()), equalTo(of(getOtherData(), Alarm.none(), now, Display.none())));
124+
assertThat(of(getData(), alarm, time, Display.none()), not(equalTo(null)));
125+
assertThat(of(getData(), alarm, time, Display.none()), not(equalTo(of(getOtherData(), alarm, time, Display.none()))));
126+
assertThat(of(getData(), alarm, time, Display.none()), not(equalTo(of(getData(), Alarm.none(), time, Display.none()))));
127+
assertThat(of(getData(), alarm, time, Display.none()), not(equalTo(of(getData(), alarm, now, Display.none()))));
128+
assertThat(of(getData(), alarm, time, Display.none()), not(equalTo(of(getData(), alarm, time, Display.of(Range.undefined(), Range.undefined(), Range.undefined(), Range.undefined(), "meters", new DecimalFormat())))));
129+
}
130+
131+
@Test
132+
public void hashCode1() {
133+
Alarm alarm = Alarm.of(AlarmSeverity.MINOR, AlarmStatus.DB, "LOW");
134+
Time time = Time.of(Instant.ofEpochSecond(1354719441, 521786982));
135+
Time now = Time.now();
136+
assertThat(of(getData(), alarm, time, Display.none()).hashCode(), equalTo(of(getData(), alarm, time, Display.none()).hashCode()));
137+
assertThat(of(getOtherData(), Alarm.none(), now, Display.none()).hashCode(), equalTo(of(getOtherData(), Alarm.none(), now, Display.none()).hashCode()));
138+
assertThat(of(getData(), alarm, time, Display.none()).hashCode(), not(equalTo(of(getOtherData(), alarm, time, Display.none()).hashCode())));
139+
assertThat(of(getData(), alarm, time, Display.none()).hashCode(), not(equalTo(of(getData(), Alarm.none(), time, Display.none()).hashCode())));
140+
assertThat(of(getData(), alarm, time, Display.none()).hashCode(), not(equalTo(of(getData(), alarm, now, Display.none()).hashCode())));
141+
assertThat(of(getData(), alarm, time, Display.none()).hashCode(), not(equalTo(of(getData(), alarm, time, Display.of(Range.undefined(), Range.undefined(), Range.undefined(), Range.undefined(), "meters", new DecimalFormat())).hashCode())));
142+
}
143+
113144
}
Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,42 @@
1-
/**
2-
* Copyright (C) 2010-14 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 org.epics.util.array.ArrayByte;
8-
import org.epics.util.array.ListByte;
9-
import org.epics.util.array.ListInteger;
10-
11-
/**
12-
*
13-
* @author carcassi
14-
*/
15-
public class VByteArrayTest extends FeatureTestVNumberArray<ListByte, VByteArray> {
16-
17-
@Override
18-
ListByte getData() {
19-
return ArrayByte.of(new byte[] {0,1,2,3,4,5,6,7,8,9});
20-
}
21-
22-
@Override
23-
VByteArray of(ListByte data, Alarm alarm, Time time, Display display) {
24-
return VByteArray.of(data, alarm, time, display);
25-
}
26-
27-
@Override
28-
VByteArray of(ListByte data, ListInteger sizes, Alarm alarm, Time time, Display display) {
29-
return VByteArray.of(data, sizes, alarm, time, display);
30-
}
31-
32-
@Override
33-
String getToString() {
34-
return "VByteArray[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], size [5, 2], MINOR(DB) - LOW, 2012-12-05T14:57:21.521786982Z]";
35-
}
36-
37-
}
1+
/**
2+
* Copyright (C) 2010-14 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 org.epics.util.array.ArrayByte;
8+
import org.epics.util.array.ListByte;
9+
import org.epics.util.array.ListInteger;
10+
11+
/**
12+
*
13+
* @author carcassi
14+
*/
15+
public class VByteArrayTest extends FeatureTestVNumberArray<ListByte, VByteArray> {
16+
17+
@Override
18+
ListByte getData() {
19+
return ArrayByte.of(new byte[] {0,1,2,3,4,5,6,7,8,9});
20+
}
21+
22+
@Override
23+
ListByte getOtherData() {
24+
return ArrayByte.of(new byte[] {0,-1,-2,-3,-4,-5,-6,-7,-8,-9});
25+
}
26+
27+
@Override
28+
VByteArray of(ListByte data, Alarm alarm, Time time, Display display) {
29+
return VByteArray.of(data, alarm, time, display);
30+
}
31+
32+
@Override
33+
VByteArray of(ListByte data, ListInteger sizes, Alarm alarm, Time time, Display display) {
34+
return VByteArray.of(data, sizes, alarm, time, display);
35+
}
36+
37+
@Override
38+
String getToString() {
39+
return "VByteArray[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], size [5, 2], MINOR(DB) - LOW, 2012-12-05T14:57:21.521786982Z]";
40+
}
41+
42+
}
Lines changed: 44 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,44 @@
1-
/**
2-
* Copyright (C) 2010-14 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 org.epics.util.array.ArrayDouble;
8-
import org.epics.util.array.ListDouble;
9-
import org.epics.util.array.ListInteger;
10-
11-
/**
12-
*
13-
* @author carcassi
14-
*/
15-
public class VDoubleArrayTest extends FeatureTestVNumberArray<ListDouble, VDoubleArray> {
16-
17-
@Override
18-
ListDouble getData() {
19-
return ArrayDouble.of(0,1,2,3,4,5,6,7,8,9);
20-
}
21-
22-
@Override
23-
VDoubleArray of(ListDouble data, Alarm alarm, Time time, Display display) {
24-
return VDoubleArray.of(data, alarm, time, display);
25-
}
26-
27-
@Override
28-
VDoubleArray of(ListDouble data, ListInteger sizes, Alarm alarm, Time time, Display display) {
29-
return VDoubleArray.of(data, sizes, alarm, time, display);
30-
}
31-
32-
@Override
33-
String getToString() {
34-
return "VDoubleArray[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0], size [5, 2], MINOR(DB) - LOW, 2012-12-05T14:57:21.521786982Z]";
35-
}
36-
37-
}
1+
/**
2+
* Copyright (C) 2010-14 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 org.epics.util.array.ArrayByte;
8+
import org.epics.util.array.ArrayDouble;
9+
import org.epics.util.array.ListByte;
10+
import org.epics.util.array.ListDouble;
11+
import org.epics.util.array.ListInteger;
12+
13+
/**
14+
*
15+
* @author carcassi
16+
*/
17+
public class VDoubleArrayTest extends FeatureTestVNumberArray<ListDouble, VDoubleArray> {
18+
19+
@Override
20+
ListDouble getData() {
21+
return ArrayDouble.of(new double[] {0,1,2,3,4,5,6,7,8,9});
22+
}
23+
24+
@Override
25+
ListDouble getOtherData() {
26+
return ArrayDouble.of(new double[] {0,-1,-2,-3,-4,-5,-6,-7,-8,-9});
27+
}
28+
29+
@Override
30+
VDoubleArray of(ListDouble data, Alarm alarm, Time time, Display display) {
31+
return VDoubleArray.of(data, alarm, time, display);
32+
}
33+
34+
@Override
35+
VDoubleArray of(ListDouble data, ListInteger sizes, Alarm alarm, Time time, Display display) {
36+
return VDoubleArray.of(data, sizes, alarm, time, display);
37+
}
38+
39+
@Override
40+
String getToString() {
41+
return "VDoubleArray[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0], size [5, 2], MINOR(DB) - LOW, 2012-12-05T14:57:21.521786982Z]";
42+
}
43+
44+
}
Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,42 @@
1-
/**
2-
* Copyright (C) 2010-14 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 org.epics.util.array.ArrayFloat;
8-
import org.epics.util.array.ListFloat;
9-
import org.epics.util.array.ListInteger;
10-
11-
/**
12-
*
13-
* @author carcassi
14-
*/
15-
public class VFloatArrayTest extends FeatureTestVNumberArray<ListFloat, VFloatArray> {
16-
17-
@Override
18-
ListFloat getData() {
19-
return ArrayFloat.of(0,1,2,3,4,5,6,7,8,9);
20-
}
21-
22-
@Override
23-
VFloatArray of(ListFloat data, Alarm alarm, Time time, Display display) {
24-
return VFloatArray.of(data, alarm, time, display);
25-
}
26-
27-
@Override
28-
VFloatArray of(ListFloat data, ListInteger sizes, Alarm alarm, Time time, Display display) {
29-
return VFloatArray.of(data, sizes, alarm, time, display);
30-
}
31-
32-
@Override
33-
String getToString() {
34-
return "VFloatArray[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0], size [5, 2], MINOR(DB) - LOW, 2012-12-05T14:57:21.521786982Z]";
35-
}
36-
37-
}
1+
/**
2+
* Copyright (C) 2010-14 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 org.epics.util.array.ArrayFloat;
8+
import org.epics.util.array.ListFloat;
9+
import org.epics.util.array.ListInteger;
10+
11+
/**
12+
*
13+
* @author carcassi
14+
*/
15+
public class VFloatArrayTest extends FeatureTestVNumberArray<ListFloat, VFloatArray> {
16+
17+
@Override
18+
ListFloat getData() {
19+
return ArrayFloat.of(new float[] {0,1,2,3,4,5,6,7,8,9});
20+
}
21+
22+
@Override
23+
ListFloat getOtherData() {
24+
return ArrayFloat.of(new float[] {0,-1,-2,-3,-4,-5,-6,-7,-8,-9});
25+
}
26+
27+
@Override
28+
VFloatArray of(ListFloat data, Alarm alarm, Time time, Display display) {
29+
return VFloatArray.of(data, alarm, time, display);
30+
}
31+
32+
@Override
33+
VFloatArray of(ListFloat data, ListInteger sizes, Alarm alarm, Time time, Display display) {
34+
return VFloatArray.of(data, sizes, alarm, time, display);
35+
}
36+
37+
@Override
38+
String getToString() {
39+
return "VFloatArray[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0], size [5, 2], MINOR(DB) - LOW, 2012-12-05T14:57:21.521786982Z]";
40+
}
41+
42+
}

0 commit comments

Comments
 (0)