This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit 8b8a9388d7e9e0caefc6c42c57932c871ac27ad6
Author: Sebastian Rühl <sru...@apache.org>
AuthorDate: Wed Jun 13 17:07:35 2018 +0200

    fixed some bugs while working on coverage
---
 .../java/ads/api/commands/types/AdsState.java      |  2 +-
 .../plc4x/java/ads/api/generic/AmsHeader.java      | 34 +++++---
 .../java/ads/api/serial/types/FragmentNumber.java  | 12 +++
 .../java/ads/api/serial/types/ReceiverAddress.java | 12 +++
 .../ads/api/serial/types/TransmitterAddress.java   | 12 +++
 .../java/ads/api/serial/types/UserDataLength.java  | 12 +++
 .../types/CommandTypesFactoryMethodTest.java       | 11 +++
 .../ads/api/generic/GenericFactoryMethodTest.java  |  6 +-
 .../java/ads/api/generic/types/AmsPortTest.java    |  9 ++-
 .../SerialFactoryMethodTest.java}                  | 29 +++----
 .../types/GenericTypesFactoryMethodTest.java       | 92 ++++++++++++++++++++++
 .../TcpFactoryMethodTest.java}                     |  8 +-
 .../tcp/types/GenericTypesFactoryMethodTest.java   | 87 ++++++++++++++++++++
 13 files changed, 283 insertions(+), 43 deletions(-)

diff --git 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsState.java
 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsState.java
index 2ddeec7..dd95fb0 100644
--- 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsState.java
+++ 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsState.java
@@ -80,6 +80,6 @@ public class AdsState extends UnsignedShortLEByteValue {
         public static final AdsState ADSSTATE_STOPPING = AdsState.of(17);
         public static final AdsState ADSSTATE_INCOMPATIBLE = AdsState.of(18);
         public static final AdsState ADSSTATE_EXCEPTION = AdsState.of(19);
-        public static final AdsState ADSSTATE_MAXSTATES = 
AdsState.of(Integer.MAX_VALUE);
+        public static final AdsState ADSSTATE_MAXSTATES = AdsState.of(65535);
     }
 }
diff --git 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsHeader.java
 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsHeader.java
index 84fe1bf..26f642e 100644
--- 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsHeader.java
+++ 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsHeader.java
@@ -68,7 +68,7 @@ public class AmsHeader implements ByteReadable {
      */
     private final Invoke invokeId;
 
-    private final LengthSupplier dataLengthSupplier;
+    private final transient LengthSupplier dataLengthSupplier;
 
     private AmsHeader(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId 
sourceAmsNetId, AmsPort sourceAmsPort, Command commandId, State stateFlags, 
DataLength dataLength, AmsError code, Invoke invokeId) {
         this.targetAmsNetId = requireNonNull(targetAmsNetId);
@@ -157,30 +157,40 @@ public class AmsHeader implements ByteReadable {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o)
+        if (this == o) {
             return true;
-        if (!(o instanceof AmsHeader))
+        }
+        if (!(o instanceof AmsHeader)) {
             return false;
+        }
 
         AmsHeader amsHeader = (AmsHeader) o;
 
-        if (!targetAmsNetId.equals(amsHeader.targetAmsNetId))
+        if (!targetAmsNetId.equals(amsHeader.targetAmsNetId)) {
             return false;
-        if (!targetAmsPort.equals(amsHeader.targetAmsPort))
+        }
+        if (!targetAmsPort.equals(amsHeader.targetAmsPort)) {
             return false;
-        if (!sourceAmsNetId.equals(amsHeader.sourceAmsNetId))
+        }
+        if (!sourceAmsNetId.equals(amsHeader.sourceAmsNetId)) {
             return false;
-        if (!sourceAmsPort.equals(amsHeader.sourceAmsPort))
+        }
+        if (!sourceAmsPort.equals(amsHeader.sourceAmsPort)) {
             return false;
-        if (commandId != amsHeader.commandId)
+        }
+        if (commandId != amsHeader.commandId) {
             return false;
-        if (!stateFlags.equals(amsHeader.stateFlags))
+        }
+        if (!stateFlags.equals(amsHeader.stateFlags)) {
             return false;
-        if (!code.equals(amsHeader.code))
+        }
+        if (!code.equals(amsHeader.code)) {
             return false;
-        if (!invokeId.equals(amsHeader.invokeId))
+        }
+        if (!invokeId.equals(amsHeader.invokeId)) {
             return false;
-        
+        }
+
         return getDataLength().equals(((AmsHeader) o).getDataLength());
     }
 
diff --git 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/FragmentNumber.java
 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/FragmentNumber.java
index 6a145ca..71104fe 100644
--- 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/FragmentNumber.java
+++ 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/FragmentNumber.java
@@ -32,6 +32,10 @@ public class FragmentNumber extends ByteValue {
         super(value);
     }
 
+    private FragmentNumber(byte[] value) {
+        super(value);
+    }
+
     private FragmentNumber(ByteBuf byteBuf) {
         this(byteBuf.readByte());
     }
@@ -40,6 +44,14 @@ public class FragmentNumber extends ByteValue {
         return new FragmentNumber(value);
     }
 
+    public static FragmentNumber of(byte... value) {
+        return new FragmentNumber(value);
+    }
+
+    public static FragmentNumber of(String value) {
+        return new FragmentNumber(Byte.valueOf(value));
+    }
+
     public static FragmentNumber of(ByteBuf byteBuf) {
         return new FragmentNumber(byteBuf);
     }
diff --git 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/ReceiverAddress.java
 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/ReceiverAddress.java
index b6ec0aa..459d00f 100644
--- 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/ReceiverAddress.java
+++ 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/ReceiverAddress.java
@@ -34,6 +34,10 @@ public class ReceiverAddress extends ByteValue {
         super(value);
     }
 
+    private ReceiverAddress(byte[] value) {
+        super(value);
+    }
+
     private ReceiverAddress(ByteBuf byteBuf) {
         this(byteBuf.readByte());
     }
@@ -42,6 +46,14 @@ public class ReceiverAddress extends ByteValue {
         return new ReceiverAddress(value);
     }
 
+    public static ReceiverAddress of(byte... value) {
+        return new ReceiverAddress(value);
+    }
+
+    public static ReceiverAddress of(String value) {
+        return new ReceiverAddress(Byte.valueOf(value));
+    }
+
     public static ReceiverAddress of(ByteBuf byteBuf) {
         return new ReceiverAddress(byteBuf);
     }
diff --git 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/TransmitterAddress.java
 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/TransmitterAddress.java
index f447b76..09b3de7 100644
--- 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/TransmitterAddress.java
+++ 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/TransmitterAddress.java
@@ -34,6 +34,10 @@ public class TransmitterAddress extends ByteValue {
         super(value);
     }
 
+    private TransmitterAddress(byte[] value) {
+        super(value);
+    }
+
     private TransmitterAddress(ByteBuf byteBuf) {
         this(byteBuf.readByte());
     }
@@ -42,6 +46,14 @@ public class TransmitterAddress extends ByteValue {
         return new TransmitterAddress(value);
     }
 
+    public static TransmitterAddress of(byte... value) {
+        return new TransmitterAddress(value);
+    }
+
+    public static TransmitterAddress of(String value) {
+        return new TransmitterAddress(Byte.valueOf(value));
+    }
+
     public static TransmitterAddress of(ByteBuf byteBuf) {
         return new TransmitterAddress(byteBuf);
     }
diff --git 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/UserDataLength.java
 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/UserDataLength.java
index e432885..7516d1c 100644
--- 
a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/UserDataLength.java
+++ 
b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/UserDataLength.java
@@ -32,6 +32,10 @@ public class UserDataLength extends ByteValue {
         super(value);
     }
 
+    private UserDataLength(byte[] value) {
+        super(value);
+    }
+
     private UserDataLength(ByteBuf byteBuf) {
         this(byteBuf.readByte());
     }
@@ -40,6 +44,14 @@ public class UserDataLength extends ByteValue {
         return new UserDataLength(value);
     }
 
+    public static UserDataLength of(byte... value) {
+        return new UserDataLength(value);
+    }
+
+    public static UserDataLength of(String value) {
+        return new UserDataLength(Byte.valueOf(value));
+    }
+
     public static UserDataLength of(ByteBuf byteBuf) {
         return new UserDataLength(byteBuf);
     }
diff --git 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/CommandTypesFactoryMethodTest.java
 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/CommandTypesFactoryMethodTest.java
index 2af1c52..01a3ab0 100644
--- 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/CommandTypesFactoryMethodTest.java
+++ 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/commands/types/CommandTypesFactoryMethodTest.java
@@ -36,6 +36,7 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assume.assumeThat;
 
 @RunWith(Parameterized.class)
@@ -48,6 +49,7 @@ public class CommandTypesFactoryMethodTest {
     public static Collection<Object[]> data() {
         return Stream.of(
             AdsReturnCode.class,
+            AdsStampHeader.class,
             AdsState.class,
             CycleTime.class,
             Data.class,
@@ -73,6 +75,12 @@ public class CommandTypesFactoryMethodTest {
     }
 
     @Test
+    public void innerReservedClasses() {
+        
assertNotNull(IndexGroup.SystemServiceGroups.SYSTEMSERVICE_CHANGENETID);
+        assertNotNull(AdsState.DefinedValues.ADSSTATE_CONFIG);
+    }
+
+    @Test
     public void testOfInt() throws Exception {
         assumeThat(clazz, instanceOf(UnsignedShortLEByteValue.class));
         Method ofMethod = clazz.getDeclaredMethod("of", int.class);
@@ -88,12 +96,14 @@ public class CommandTypesFactoryMethodTest {
 
     @Test
     public void testOfString() throws Exception {
+        assumeThat(clazz, not(AdsStampHeader.class));
         Method ofMethod = clazz.getDeclaredMethod("of", String.class);
         ofMethod.invoke(null, clazz != AdsReturnCode.class ? "1" : 
"ADS_CODE_0");
     }
 
     @Test
     public void testGetter() throws Exception {
+        assumeThat(clazz, not(AdsStampHeader.class));
         List<Method> getters = Arrays
             .stream(clazz.getDeclaredMethods())
             .filter(method -> (
@@ -135,6 +145,7 @@ public class CommandTypesFactoryMethodTest {
 
     @Test
     public void testOfBytes() throws Exception {
+        assumeThat(clazz, not(AdsStampHeader.class));
         assumeThat(clazz, not(Data.class));
         assumeThat(clazz, not(AdsReturnCode.class));
         Field num_bytes_field = clazz.getDeclaredField("NUM_BYTES");
diff --git 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
index 9c554ee..a763a25 100644
--- 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
+++ 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
@@ -19,8 +19,6 @@
 package org.apache.plc4x.java.ads.api.generic;
 
 import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.tcp.AmsTCPPacket;
-import org.apache.plc4x.java.ads.api.tcp.AmsTcpHeader;
 import org.apache.plc4x.java.ads.api.util.LengthSupplier;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -49,9 +47,7 @@ public class GenericFactoryMethodTest {
     public static Collection<Object[]> data() {
         return Stream.of(
             AdsData.class,
-            AmsHeader.class,
-            AmsTcpHeader.class,
-            AmsTCPPacket.class
+            AmsHeader.class
         ).map(clazz -> new Object[]{clazz}).collect(Collectors.toList());
     }
 
diff --git 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/AmsPortTest.java
 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/AmsPortTest.java
index 43164b8..8f61aa7 100644
--- 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/AmsPortTest.java
+++ 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/types/AmsPortTest.java
@@ -23,6 +23,7 @@ import org.junit.Test;
 
 import static org.apache.plc4x.java.ads.util.Junit5Backport.assertThrows;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 
 public class AmsPortTest {
@@ -30,6 +31,12 @@ public class AmsPortTest {
     private final byte NULL_BYTE = 0x0;
 
     @Test
+    public void reservedPorts() {
+        // Initialize subclass
+        assertNotNull(AmsPort.ReservedPorts.logger);
+    }
+
+    @Test
     public void ofBytes() {
         assertEquals("0", AmsPort.of(NULL_BYTE, NULL_BYTE).toString());
         assertThrows(IllegalArgumentException.class, () -> 
AmsPort.of(NULL_BYTE, NULL_BYTE, NULL_BYTE));
@@ -52,7 +59,7 @@ public class AmsPortTest {
     public void noHex() {
         AmsPort.of("0x0100");
     }
-    
+
     @Test
     public void ofString() {
         assertByte(AmsPort.of("1"), "0x0100");
diff --git 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/serial/SerialFactoryMethodTest.java
similarity index 76%
copy from 
plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
copy to 
plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/serial/SerialFactoryMethodTest.java
index 9c554ee..267812a 100644
--- 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
+++ 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/serial/SerialFactoryMethodTest.java
@@ -16,12 +16,9 @@
  specific language governing permissions and limitations
  under the License.
  */
-package org.apache.plc4x.java.ads.api.generic;
+package org.apache.plc4x.java.ads.api.serial;
 
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.tcp.AmsTCPPacket;
-import org.apache.plc4x.java.ads.api.tcp.AmsTcpHeader;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
+import org.apache.plc4x.java.ads.api.util.ByteReadable;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -36,11 +33,10 @@ import java.util.stream.Stream;
 
 import static org.hamcrest.Matchers.*;
 import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
-import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.*;
 
 @RunWith(Parameterized.class)
-public class GenericFactoryMethodTest {
+public class SerialFactoryMethodTest {
 
     @Parameterized.Parameter
     public Class<?> clazz;
@@ -48,10 +44,9 @@ public class GenericFactoryMethodTest {
     @Parameterized.Parameters(name = "{index} {0}")
     public static Collection<Object[]> data() {
         return Stream.of(
-            AdsData.class,
-            AmsHeader.class,
-            AmsTcpHeader.class,
-            AmsTCPPacket.class
+            AmsSerialAcknowledgeFrame.class,
+            AmsSerialFrame.class,
+            AmsSerialResetFrame.class
         ).map(clazz -> new Object[]{clazz}).collect(Collectors.toList());
     }
 
@@ -69,12 +64,10 @@ public class GenericFactoryMethodTest {
                 continue;
             }
             Object invoke = method.invoke(null, 
Arrays.stream(method.getParameterTypes()).map(aClass -> {
-                if (aClass == Command.class) {
-                    return Command.INVALID;
-                } else if (aClass == LengthSupplier[].class) {
-                    return new LengthSupplier[]{() -> 0};
-                } else if (aClass == long.class) {
-                    return 1L;
+                if (ByteReadable.class.isAssignableFrom(aClass)) {
+                    ByteReadable mock = (ByteReadable) mock(aClass, 
RETURNS_DEEP_STUBS);
+                    when(mock.getBytes()).thenReturn(new byte[0]);
+                    return mock;
                 } else {
                     return mock(aClass, RETURNS_DEEP_STUBS);
                 }
diff --git 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/serial/types/GenericTypesFactoryMethodTest.java
 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/serial/types/GenericTypesFactoryMethodTest.java
new file mode 100644
index 0000000..d2d8cb0
--- /dev/null
+++ 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/serial/types/GenericTypesFactoryMethodTest.java
@@ -0,0 +1,92 @@
+/*
+ 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
+
+   http://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.ads.api.serial.types;
+
+import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
+import org.apache.plc4x.java.ads.api.generic.types.Command;
+import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
+import org.apache.plc4x.java.ads.api.util.UnsignedShortLEByteValue;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.not;
+import static org.junit.Assume.assumeThat;
+
+@RunWith(Parameterized.class)
+public class GenericTypesFactoryMethodTest {
+
+    @Parameterized.Parameter
+    public Class<?> clazz;
+
+    @Parameterized.Parameters(name = "{index} {0}")
+    public static Collection<Object[]> data() {
+        return Stream.of(
+            CRC.class,
+            FragmentNumber.class,
+            MagicCookie.class,
+            ReceiverAddress.class,
+            TransmitterAddress.class,
+            UserData.class,
+            UserDataLength.class
+        ).map(clazz -> new Object[]{clazz}).collect(Collectors.toList());
+    }
+
+    @Test
+    public void testOfInt() throws Exception {
+        assumeThat(clazz, instanceOf(UnsignedShortLEByteValue.class));
+        Method ofMethod = clazz.getDeclaredMethod("of", int.class);
+        ofMethod.invoke(null, 1);
+    }
+
+    @Test
+    public void testOfLong() throws Exception {
+        assumeThat(clazz, instanceOf(UnsignedIntLEByteValue.class));
+        Method ofMethod = clazz.getDeclaredMethod("of", long.class);
+        ofMethod.invoke(null, 1L);
+    }
+
+    @Test
+    public void testOfString() throws Exception {
+        Method ofMethod = clazz.getDeclaredMethod("of", String.class);
+        String testString = "1";
+        if (clazz == AmsNetId.class) {
+            testString = "1.1.1.1.1.1";
+        } else if (clazz == Command.class) {
+            testString = Command.ADS_ADD_DEVICE_NOTIFICATION.name();
+        }
+        ofMethod.invoke(null, testString);
+    }
+
+    @Test
+    public void testOfBytes() throws Exception {
+        assumeThat(clazz, not(UserData.class));
+        Field num_bytes_field = clazz.getDeclaredField("NUM_BYTES");
+        Integer numberOfBytes = (Integer) num_bytes_field.get(null);
+        Method ofMethod = clazz.getDeclaredMethod("of", byte[].class);
+        ofMethod.invoke(null, (Object) new byte[numberOfBytes]);
+    }
+}
diff --git 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/tcp/TcpFactoryMethodTest.java
similarity index 92%
copy from 
plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
copy to 
plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/tcp/TcpFactoryMethodTest.java
index 9c554ee..7897a33 100644
--- 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/generic/GenericFactoryMethodTest.java
+++ 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/tcp/TcpFactoryMethodTest.java
@@ -16,11 +16,9 @@
  specific language governing permissions and limitations
  under the License.
  */
-package org.apache.plc4x.java.ads.api.generic;
+package org.apache.plc4x.java.ads.api.tcp;
 
 import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.tcp.AmsTCPPacket;
-import org.apache.plc4x.java.ads.api.tcp.AmsTcpHeader;
 import org.apache.plc4x.java.ads.api.util.LengthSupplier;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -40,7 +38,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 
 @RunWith(Parameterized.class)
-public class GenericFactoryMethodTest {
+public class TcpFactoryMethodTest {
 
     @Parameterized.Parameter
     public Class<?> clazz;
@@ -48,8 +46,6 @@ public class GenericFactoryMethodTest {
     @Parameterized.Parameters(name = "{index} {0}")
     public static Collection<Object[]> data() {
         return Stream.of(
-            AdsData.class,
-            AmsHeader.class,
             AmsTcpHeader.class,
             AmsTCPPacket.class
         ).map(clazz -> new Object[]{clazz}).collect(Collectors.toList());
diff --git 
a/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/tcp/types/GenericTypesFactoryMethodTest.java
 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/tcp/types/GenericTypesFactoryMethodTest.java
new file mode 100644
index 0000000..2a49cea
--- /dev/null
+++ 
b/plc4j/protocols/ads/src/test/java/org/apache/plc4x/java/ads/api/tcp/types/GenericTypesFactoryMethodTest.java
@@ -0,0 +1,87 @@
+/*
+ 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
+
+   http://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.ads.api.tcp.types;
+
+import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
+import org.apache.plc4x.java.ads.api.generic.types.Command;
+import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
+import org.apache.plc4x.java.ads.api.util.UnsignedShortLEByteValue;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.not;
+import static org.junit.Assume.assumeThat;
+
+@RunWith(Parameterized.class)
+public class GenericTypesFactoryMethodTest {
+
+    @Parameterized.Parameter
+    public Class<?> clazz;
+
+    @Parameterized.Parameters(name = "{index} {0}")
+    public static Collection<Object[]> data() {
+        return Stream.of(
+            TcpLength.class,
+            UserData.class
+        ).map(clazz -> new Object[]{clazz}).collect(Collectors.toList());
+    }
+
+    @Test
+    public void testOfInt() throws Exception {
+        assumeThat(clazz, instanceOf(UnsignedShortLEByteValue.class));
+        Method ofMethod = clazz.getDeclaredMethod("of", int.class);
+        ofMethod.invoke(null, 1);
+    }
+
+    @Test
+    public void testOfLong() throws Exception {
+        assumeThat(clazz, instanceOf(UnsignedIntLEByteValue.class));
+        Method ofMethod = clazz.getDeclaredMethod("of", long.class);
+        ofMethod.invoke(null, 1L);
+    }
+
+    @Test
+    public void testOfString() throws Exception {
+        Method ofMethod = clazz.getDeclaredMethod("of", String.class);
+        String testString = "1";
+        if (clazz == AmsNetId.class) {
+            testString = "1.1.1.1.1.1";
+        } else if (clazz == Command.class) {
+            testString = Command.ADS_ADD_DEVICE_NOTIFICATION.name();
+        }
+        ofMethod.invoke(null, testString);
+    }
+
+    @Test
+    public void testOfBytes() throws Exception {
+        assumeThat(clazz, not(UserData.class));
+        Field num_bytes_field = clazz.getDeclaredField("NUM_BYTES");
+        Integer numberOfBytes = (Integer) num_bytes_field.get(null);
+        Method ofMethod = clazz.getDeclaredMethod("of", byte[].class);
+        ofMethod.invoke(null, (Object) new byte[numberOfBytes]);
+    }
+}

-- 
To stop receiving notification emails like this one, please contact
sru...@apache.org.

Reply via email to