You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2022/09/28 12:45:33 UTC
[plc4x] branch develop updated: refactor(plc-values): Refactored all usages of BitString to use BYTE, WORD, DWORD or LWORD instead.
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new 4ee794ecf refactor(plc-values): Refactored all usages of BitString to use BYTE, WORD, DWORD or LWORD instead.
4ee794ecf is described below
commit 4ee794ecf2f8afafaf9f8aba8d51238b9aee3184
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Wed Sep 28 14:45:24 2022 +0200
refactor(plc-values): Refactored all usages of BitString to use BYTE, WORD, DWORD or LWORD instead.
---
RELEASE_NOTES | 5 +
.../plc4x/protocol/ads/ManualAdsDriverTest.java | 19 ++-
.../apache/plc4x/java/modbus/ModbusEncodeTest.java | 8 +-
.../java/s7/readwrite/ManualS7DriverTest.java | 6 +-
.../org/apache/plc4x/nifi/util/Plc4xCommon.java | 5 +-
.../java/spi/values/IEC61131ValueHandler.java | 50 +++----
.../apache/plc4x/java/spi/values/PlcBitString.java | 148 ---------------------
.../org/apache/plc4x/test/manual/ManualTest.java | 10 +-
8 files changed, 43 insertions(+), 208 deletions(-)
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 378c05c5f..2d854a780 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -33,6 +33,11 @@ Incompatible changes
examples related, as Edgent is abandoned and there were
CVEs reported, which will not be fixed.
+- We have replaced the BitString types with BYTE, WORD, DWORD,
+ and LWORD which generally match their unsigned integer
+ counterparts. So we are no longer returning lists of boolean
+ values for any of these types.
+
Bug Fixes
---------
diff --git a/plc4j/drivers/ads/src/test/java/org/apache/plc4x/protocol/ads/ManualAdsDriverTest.java b/plc4j/drivers/ads/src/test/java/org/apache/plc4x/protocol/ads/ManualAdsDriverTest.java
index 35691b976..792afed65 100644
--- a/plc4j/drivers/ads/src/test/java/org/apache/plc4x/protocol/ads/ManualAdsDriverTest.java
+++ b/plc4j/drivers/ads/src/test/java/org/apache/plc4x/protocol/ads/ManualAdsDriverTest.java
@@ -84,13 +84,10 @@ public class ManualAdsDriverTest extends ManualTest {
String connectionString = String.format("ads:tcp://%s?sourceAmsNetId=%s&sourceAmsPort=%d&targetAmsNetId=%s&targetAmsPort=%d", spsIp, sourceAmsNetId, sourceAmsPort, targetAmsNetId, targetAmsPort);
ManualAdsDriverTest test = new ManualAdsDriverTest(connectionString);
test.addTestCase("MAIN.hurz_BOOL", new PlcBOOL(true));
- test.addTestCase("MAIN.hurz_BYTE", new PlcBitString(new boolean[]{false, false, true, false, true, false, true, false}));
- test.addTestCase("MAIN.hurz_WORD", new PlcBitString(new boolean[]{true, false, true, false, false, true, false, true, true, false, true, true, true, false, false, false}));
- test.addTestCase("MAIN.hurz_DWORD", new PlcBitString(new boolean[]{true, true, true, true, true, true, false, false, true, true, false, true, true, true, true, false, true, false, false, false, true, false, false, false, true, false, true, true, true, false, false, false}));
- // These are the values, if we decide to go with numeric values instead of bit-strings.
- //test.addTestCase("MAIN.hurz_BYTE", new PlcBYTE(42));
- //test.addTestCase("MAIN.hurz_WORD", new PlcWORD(42424));
- //test.addTestCase("MAIN.hurz_DWORD", new PlcDWORD(4242442424L));
+ test.addTestCase("MAIN.hurz_BYTE", new PlcBYTE(42));
+ test.addTestCase("MAIN.hurz_WORD", new PlcWORD(42424));
+ test.addTestCase("MAIN.hurz_DWORD", new PlcDWORD(4242442424L));
+ test.addTestCase("MAIN.hurz_LWORD", new PlcLWORD(4242442424242424242L));
test.addTestCase("MAIN.hurz_SINT", new PlcSINT(-42));
test.addTestCase("MAIN.hurz_USINT", new PlcUSINT(42));
test.addTestCase("MAIN.hurz_INT", new PlcINT(-2424));
@@ -111,10 +108,10 @@ public class ManualAdsDriverTest extends ManualTest {
//test.addTestCase("MAIN.hurz_DT", new PlcDT("1972-03-29T00:00"));
Map<String, PlcValue> children = new HashMap<>();
children.put("hurz_BOOL", new PlcBOOL(true));
- children.put("hurz_BYTE", new PlcBitString(new boolean[]{false, false, false, false, false, false, false, true}));
- children.put("hurz_WORD", new PlcBitString(new boolean[]{false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false}));
- children.put("hurz_DWORD", new PlcBitString(new boolean[]{false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true}));
- children.put("hurz_LDWORD", new PlcBitString(new boolean[]{false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, [...]
+ children.put("hurz_BYTE", new PlcBYTE(42));
+ children.put("hurz_WORD", new PlcWORD(42424));
+ children.put("hurz_DWORD", new PlcDWORD(4242442424L));
+ children.put("hurz_LDWORD", new PlcLWORD(4242442424242424242L));
children.put("hurz_SINT", new PlcSINT(5));
children.put("hurz_USINT", new PlcUSINT(6));
children.put("hurz_INT", new PlcINT(7));
diff --git a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusEncodeTest.java b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusEncodeTest.java
index fe1ab6321..7c509b7b6 100644
--- a/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusEncodeTest.java
+++ b/plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusEncodeTest.java
@@ -58,7 +58,7 @@ public class ModbusEncodeTest {
Integer[] object = {1,255,0,4,5,6,7,8};
ModbusFieldHoldingRegister holdingregister = ModbusFieldHoldingRegister.of("holding-register:8:BYTE");
PlcList list = (PlcList) IEC61131ValueHandler.of(holdingregister, object);
- Assertions.assertEquals("[[false,false,false,false,false,false,false,true],[true,true,true,true,true,true,true,true],[false,false,false,false,false,false,false,false],[false,false,false,false,false,true,false,false],[false,false,false,false,false,true,false,true],[false,false,false,false,false,true,true,false],[false,false,false,false,false,true,true,true],[false,false,false,false,true,false,false,false]]", list.toString());
+ Assertions.assertEquals("[1,255,0,4,5,6,7,8]", list.toString());
}
@Test
@@ -82,7 +82,7 @@ public class ModbusEncodeTest {
Integer[] object = {1,65535,10,55000,5,6,7};
ModbusFieldHoldingRegister holdingregister = ModbusFieldHoldingRegister.of("holding-register:7:WORD");
PlcList list = (PlcList) IEC61131ValueHandler.of(holdingregister, object);
- Assertions.assertEquals("[[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[false,false,false,false,false,false,false,false,false,false,false,false,true,false,true,false],[true,true,false,true,false,true,true,false,true,true,false,true,true,false,false,false],[false,false,false,false,false,false,false,false,false,false,false,false,false,true,false,true [...]
+ Assertions.assertEquals("[1,65535,10,55000,5,6,7]", list.toString());
}
@Test
@@ -106,7 +106,7 @@ public class ModbusEncodeTest {
Long[] object = {1L,655354775L,0L,4294967295L,5L,6L,7L};
ModbusFieldHoldingRegister holdingregister = ModbusFieldHoldingRegister.of("holding-register:7:DWORD");
PlcList list = (PlcList) IEC61131ValueHandler.of(holdingregister, object);
- Assertions.assertEquals("[[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true],[false,false,true,false,false,true,true,true,false,false,false,false,true,true,true,true,true,true,true,false,true,false,true,true,true,false,false,true,false,true,true,true],[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false [...]
+ Assertions.assertEquals("[1,655354775,0,4294967295,5,6,7]", list.toString());
}
@Test
@@ -130,7 +130,7 @@ public class ModbusEncodeTest {
BigInteger[] object = {BigInteger.valueOf(1L),BigInteger.valueOf(655354775L),BigInteger.valueOf(0),new BigInteger("18446744073709551615"),BigInteger.valueOf(5L),BigInteger.valueOf(6L),BigInteger.valueOf(7L)};
ModbusFieldHoldingRegister holdingregister = ModbusFieldHoldingRegister.of("holding-register:7:LWORD");
PlcList list = (PlcList) IEC61131ValueHandler.of(holdingregister, object);
- Assertions.assertEquals("[[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true],[false,false,false,false,false,false,false,false,false,false,false,false, [...]
+ Assertions.assertEquals("[1,655354775,0,18446744073709551615,5,6,7]", list.toString());
}
@Test
diff --git a/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/ManualS7DriverTest.java b/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/ManualS7DriverTest.java
index 4f1488a5b..e1a041301 100644
--- a/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/ManualS7DriverTest.java
+++ b/plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/readwrite/ManualS7DriverTest.java
@@ -73,9 +73,9 @@ public class ManualS7DriverTest extends ManualTest {
public static void main(String[] args) throws Exception {
ManualS7DriverTest test = new ManualS7DriverTest("s7://192.168.23.30");
test.addTestCase("%DB4:0.0:BOOL", new PlcBOOL(true));
- test.addTestCase("%DB4:1:BYTE", new PlcBitString(new boolean[]{false, false, true, false, true, false, true, false}));
- test.addTestCase("%DB4:2:WORD", new PlcBitString(new boolean[]{true, false, true, false, false, true, false, true, true, false, true, true, true, false, false, false}));
- test.addTestCase("%DB4:4:DWORD", new PlcBitString(new boolean[]{true, true, true, true, true, true, false, false, true, true, false, true, true, true, true, false, true, false, false, false, true, false, false, false, true, false, true, true, true, false, false, false}));
+ test.addTestCase("%DB4:1:BYTE", new PlcBYTE(42));
+ test.addTestCase("%DB4:2:WORD", new PlcWORD(42424));
+ test.addTestCase("%DB4:4:DWORD", new PlcDWORD(4242442424L));
test.addTestCase("%DB4:16:SINT", new PlcSINT(-42));
test.addTestCase("%DB4:17:USINT", new PlcUSINT(42));
test.addTestCase("%DB4:18:INT", new PlcINT(-2424));
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
index bfc4cea56..4509e35b3 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
+++ b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/main/java/org/apache/plc4x/nifi/util/Plc4xCommon.java
@@ -28,7 +28,6 @@ import org.apache.avro.SchemaBuilder.FieldAssembler;
import org.apache.plc4x.java.api.value.PlcValue;
import org.apache.plc4x.java.spi.values.PlcBOOL;
import org.apache.plc4x.java.spi.values.PlcBYTE;
-import org.apache.plc4x.java.spi.values.PlcBitString;
import org.apache.plc4x.java.spi.values.PlcCHAR;
import org.apache.plc4x.java.spi.values.PlcDATE;
import org.apache.plc4x.java.spi.values.PlcDATE_AND_TIME;
@@ -76,9 +75,7 @@ public class Plc4xCommon {
for (Map.Entry<String, ? extends PlcValue> entry : responseDataStructure.entrySet()) {
fieldName = entry.getKey();
- if (entry.getValue() instanceof PlcBitString) {
- builder.name(fieldName).type().unionOf().nullBuilder().endNull().and().stringType().endUnion().noDefault();
- }else if (entry.getValue() instanceof PlcBOOL) {
+ if (entry.getValue() instanceof PlcBOOL) {
builder.name(fieldName).type().unionOf().nullBuilder().endNull().and().booleanType().endUnion().noDefault();
}else if (entry.getValue() instanceof PlcBYTE) {
builder.name(fieldName).type().unionOf().nullBuilder().endNull().and().bytesType().endUnion().noDefault();
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/IEC61131ValueHandler.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/IEC61131ValueHandler.java
index e31a803de..9318da108 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/IEC61131ValueHandler.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/IEC61131ValueHandler.java
@@ -129,17 +129,15 @@ public class IEC61131ValueHandler implements PlcValueHandler {
case "BYTE":
case "BITARR8":
if(value instanceof Short) {
- return new PlcBitString((short) value);
+ return new PlcBYTE((short) value);
} else if(value instanceof Integer) {
- return new PlcBitString(((Integer) value).shortValue());
+ return new PlcBYTE(((Integer) value).shortValue());
} else if(value instanceof Long) {
- return new PlcBitString(((Long) value).shortValue());
+ return new PlcBYTE(((Long) value).shortValue());
} else if(value instanceof BigInteger) {
- return new PlcBitString(((BigInteger) value).shortValue());
- } else if(value instanceof boolean[]) {
- return new PlcBitString((boolean[]) value);
+ return new PlcBYTE(((BigInteger) value).shortValue());
}
- throw new PlcRuntimeException("BYTE requires short or boolean[8]");
+ throw new PlcRuntimeException("BYTE requires short");
case "SINT":
case "INT8":
return PlcSINT.of(value);
@@ -156,17 +154,15 @@ public class IEC61131ValueHandler implements PlcValueHandler {
case "WORD":
case "BITARR16":
if(value instanceof Short) {
- return new PlcBitString((int) value);
+ return new PlcWORD((int) value);
} else if(value instanceof Integer) {
- return new PlcBitString((int) value);
+ return new PlcWORD((int) value);
} else if(value instanceof Long) {
- return new PlcBitString(((Long) value).intValue());
+ return new PlcWORD(((Long) value).intValue());
} else if(value instanceof BigInteger) {
- return new PlcBitString(((BigInteger) value).intValue());
- } else if(value instanceof boolean[]) {
- return new PlcBitString((boolean[]) value);
+ return new PlcWORD(((BigInteger) value).intValue());
}
- throw new PlcRuntimeException("WORD requires int or boolean[16]");
+ throw new PlcRuntimeException("WORD requires int");
case "DINT":
case "INT32":
return PlcDINT.of(value);
@@ -176,17 +172,15 @@ public class IEC61131ValueHandler implements PlcValueHandler {
case "DWORD":
case "BITARR32":
if(value instanceof Short) {
- return new PlcBitString((long) value);
+ return new PlcDWORD((long) value);
} else if(value instanceof Integer) {
- return new PlcBitString((long) value);
+ return new PlcDWORD((long) value);
} else if(value instanceof Long) {
- return new PlcBitString((long) value);
+ return new PlcDWORD((long) value);
} else if(value instanceof BigInteger) {
- return new PlcBitString(((BigInteger) value).longValue());
- } else if(value instanceof boolean[]) {
- return new PlcBitString((boolean[]) value);
+ return new PlcDWORD(((BigInteger) value).longValue());
}
- throw new PlcRuntimeException("DWORD requires long or boolean[32]");
+ throw new PlcRuntimeException("DWORD requires long");
case "LINT":
case "INT64":
return PlcLINT.of(value);
@@ -196,17 +190,15 @@ public class IEC61131ValueHandler implements PlcValueHandler {
case "LWORD":
case "BITARR64":
if(value instanceof Short) {
- return new PlcBitString(BigInteger.valueOf((long) value));
+ return new PlcLWORD(BigInteger.valueOf((long) value));
} else if(value instanceof Integer) {
- return new PlcBitString(BigInteger.valueOf((long) value));
+ return new PlcLWORD(BigInteger.valueOf((long) value));
} else if(value instanceof Long) {
- return new PlcBitString(BigInteger.valueOf((long) value));
+ return new PlcLWORD(BigInteger.valueOf((long) value));
} else if(value instanceof BigInteger) {
- return new PlcBitString((BigInteger) value);
- } else if(value instanceof boolean[]) {
- return new PlcBitString((boolean[]) value);
+ return new PlcLWORD((BigInteger) value);
}
- throw new PlcRuntimeException("LWORD requires BigInteger or boolean[64]");
+ throw new PlcRuntimeException("LWORD requires BigInteger");
case "REAL":
case "FLOAT":
return PlcREAL.of(value);
@@ -221,7 +213,7 @@ public class IEC61131ValueHandler implements PlcValueHandler {
return PlcSTRING.of(value);
case "WSTRING":
case "STRING16":
- return PlcSTRING.of(value);
+ return PlcWSTRING.of(value);
case "TIME":
return PlcTIME.of(value);
case "DATE":
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBitString.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBitString.java
deleted file mode 100644
index f203b88c8..000000000
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/values/PlcBitString.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.plc4x.java.spi.values;
-
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
-import org.apache.plc4x.java.api.value.PlcValue;
-
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
-
-@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
-public class PlcBitString extends PlcList {
-
- public PlcBitString(boolean[] values) {
- super(toBitString(values));
- }
-
- public PlcBitString(short byteBitString) {
- super(toBitString(BigInteger.valueOf(byteBitString), 8));
- }
-
- public PlcBitString(int wordBitString) {
- super(toBitString(BigInteger.valueOf(wordBitString), 16));
- }
-
- public PlcBitString(long dwordBitString) {
- super(toBitString(BigInteger.valueOf(dwordBitString), 32));
- }
-
- public PlcBitString(BigInteger lwordBitString) {
- super(toBitString(lwordBitString, 64));
- }
-
- @Override
- public boolean isShort() {
- return getList().size() == 8;
- }
-
- @Override
- public short getShort() {
- if(!isShort()) {
- throw new PlcRuntimeException("getShort requires 8 boolean values");
- }
- return fromBitString(getList(), 8).shortValue();
- }
-
- @Override
- public boolean isInteger() {
- return getList().size() == 16;
- }
-
- @Override
- public int getInteger() {
- if(!isInteger()) {
- throw new PlcRuntimeException("getInteger requires 16 boolean values");
- }
- return fromBitString(getList(), 16).intValue();
- }
-
- @Override
- public boolean isLong() {
- return getList().size() == 32;
- }
-
- @Override
- public long getLong() {
- if(!isLong()) {
- throw new PlcRuntimeException("getLong requires 32 boolean values");
- }
- return fromBitString(getList(), 32).longValue();
- }
-
- @Override
- public boolean isBigInteger() {
- return getList().size() == 64;
- }
-
- @Override
- public BigInteger getBigInteger() {
- if(!isBigInteger()) {
- throw new PlcRuntimeException("getBigInteger requires 64 boolean values");
- }
- return fromBitString(getList(), 64);
- }
-
- @Override
- public Object getObject() {
- boolean[] result = new boolean[getLength()];
- for (int i = 0; i < getLength(); i++) {
- result[i] = getList().get(i).getBoolean();
- }
- return result;
- }
-
- public static List<PlcValue> toBitString(boolean[] booleanValues) {
- if((booleanValues.length != 8) && (booleanValues.length != 16) &&
- (booleanValues.length != 32) && (booleanValues.length != 64)) {
- throw new PlcRuntimeException("invalid number of values");
- }
- List<PlcValue> values = new ArrayList<>(booleanValues.length);
- for (boolean booleanValue : booleanValues) {
- values.add(new PlcBOOL(booleanValue));
- }
- return values;
- }
-
- public static List<PlcValue> toBitString(BigInteger bigInteger, int numBits) {
- if(bigInteger.bitCount() > numBits) {
- throw new PlcRuntimeException("value too big");
- }
- // Convert the numeric value into an array of bits.
- List<PlcValue> values = new ArrayList<>(numBits);
- for (int i = numBits - 1; i >= 0; i--) {
- values.add(new PlcBOOL(bigInteger.testBit(i)));
- }
- return values;
- }
-
- public static BigInteger fromBitString(List<PlcValue> bitString, int numBits) {
- BigInteger bigInteger = new BigInteger(String.valueOf(0L));
- for (int i = 0; i < numBits; i++) {
- final PlcValue plcValue = bitString.get(i);
- if(plcValue.getBoolean()) {
- bigInteger = bigInteger.setBit((numBits - 1) - i);
- }
- }
- return bigInteger;
- }
-
-}
diff --git a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/manual/ManualTest.java b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/manual/ManualTest.java
index 018329b36..494da6bcf 100644
--- a/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/manual/ManualTest.java
+++ b/plc4j/utils/test-utils/src/main/java/org/apache/plc4x/test/manual/ManualTest.java
@@ -26,7 +26,6 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
import org.apache.plc4x.java.api.messages.PlcWriteResponse;
import org.apache.plc4x.java.api.types.PlcResponseCode;
import org.apache.plc4x.java.api.value.PlcValue;
-import org.apache.plc4x.java.spi.values.PlcBitString;
import org.apache.plc4x.java.spi.values.PlcList;
import org.apache.plc4x.java.spi.values.PlcValues;
import org.junit.jupiter.api.Assertions;
@@ -154,14 +153,7 @@ public abstract class ManualTest {
Assertions.assertEquals(PlcResponseCode.OK, readResponse.getResponseCode(fieldName),
"Field: " + fieldName);
Assertions.assertNotNull(readResponse.getPlcValue(fieldName), "Field: " + fieldName);
- if (readResponse.getPlcValue(fieldName) instanceof PlcBitString) {
- PlcBitString plcBitString = (PlcBitString) readResponse.getPlcValue(fieldName);
- List<PlcValue> expectedValues = ((PlcBitString) testCase.expectedReadValue).getList();
- for (int j = 0; j < expectedValues.size(); j++) {
- Assertions.assertEquals(expectedValues.get(j).toString(), plcBitString.getIndex(j).toString(),
- "Field: " + fieldName);
- }
- } else if (readResponse.getPlcValue(fieldName) instanceof PlcList) {
+ if (readResponse.getPlcValue(fieldName) instanceof PlcList) {
PlcList plcList = (PlcList) readResponse.getPlcValue(fieldName);
List<Object> expectedValues = (List<Object>) testCase.expectedReadValue;
for (int j = 0; j < expectedValues.size(); j++) {