You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/06/07 13:08:05 UTC

[plc4x] branch develop updated (81273fc4f9 -> b744cc9afd)

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

sruehl pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


    from 81273fc4f9 chore(build): rename workflow to align with others
     new 524c2c836f refactor(plc4go): deduplicate package name out of struct names
     new 41b82bd16f refactor(plc4go): general QC pass
     new b744cc9afd test(plc4go/cbus): add tests for static helper

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 plc4go/internal/ads/Browser.go                     |   2 +-
 plc4go/internal/bacnetip/ApplicationModule.go      |   2 +-
 plc4go/internal/bacnetip/Discoverer.go             |   4 +-
 plc4go/internal/eip/{EipDriver.go => Driver.go}    |   0
 plc4go/internal/eip/Reader.go                      |   8 +-
 plc4go/internal/eip/Tag.go                         |   4 +-
 plc4go/internal/eip/Writer.go                      |   2 +-
 plc4go/internal/eip/mock_EIPPlcTag_test.go         | 407 ---------------------
 plc4go/internal/{s7 => eip}/mock_PlcTag_test.go    | 199 ++--------
 .../{ModbusAsciiDriver.go => AsciiDriver.go}       |   8 +-
 plc4go/internal/modbus/Reader.go                   |   4 +-
 .../modbus/{ModbusRtuDriver.go => RtuDriver.go}    |   8 +-
 plc4go/internal/modbus/Tag.go                      |   4 +-
 .../modbus/{ModbusTcpDriver.go => TcpDriver.go}    |   8 +-
 plc4go/internal/modbus/Writer.go                   |   2 +-
 plc4go/internal/simulated/Device.go                |  21 +-
 plc4go/internal/simulated/Device_test.go           |  30 +-
 plc4go/internal/simulated/Reader_test.go           |   8 +-
 plc4go/internal/simulated/Tag.go                   |   6 +-
 plc4go/internal/simulated/Tag_test.go              |   2 +-
 plc4go/internal/simulated/Writer_test.go           |  14 +-
 plc4go/internal/simulated/mock_Tag_test.go         |  28 +-
 plc4go/pkg/api/cache/connectionContainer_test.go   |   7 +-
 plc4go/pkg/api/model/plc_response_code.go          |   2 +-
 plc4go/pkg/api/model/plc_response_code_test.go     |   7 +-
 .../cbus/readwrite/model/StaticHelper_test.go      | 300 +++++++++++++--
 plc4go/spi/default/testTransportInstance_test.go   |  83 -----
 plc4go/spi/model/DefaultPlcTagRequest_test.go      |  17 +-
 plc4go/spi/tracer/Tracer.go                        |   2 +-
 plc4go/spi/tracer/mock_Provider_test.go            | 127 +++++++
 plc4go/spi/tracer/mock_TracerProvider_test.go      | 127 -------
 plc4go/spi/utils/ReadBufferJsonBased_test.go       |   5 +-
 plc4go/tools/plc4xgenerator/gen.go                 |   3 +-
 33 files changed, 555 insertions(+), 896 deletions(-)
 rename plc4go/internal/eip/{EipDriver.go => Driver.go} (100%)
 delete mode 100644 plc4go/internal/eip/mock_EIPPlcTag_test.go
 copy plc4go/internal/{s7 => eip}/mock_PlcTag_test.go (59%)
 rename plc4go/internal/modbus/{ModbusAsciiDriver.go => AsciiDriver.go} (92%)
 rename plc4go/internal/modbus/{ModbusRtuDriver.go => RtuDriver.go} (92%)
 rename plc4go/internal/modbus/{ModbusTcpDriver.go => TcpDriver.go} (92%)
 delete mode 100644 plc4go/spi/default/testTransportInstance_test.go
 create mode 100644 plc4go/spi/tracer/mock_Provider_test.go
 delete mode 100644 plc4go/spi/tracer/mock_TracerProvider_test.go


[plc4x] 03/03: test(plc4go/cbus): add tests for static helper

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b744cc9afdcf196b5ab67b30f764a5167ae2f359
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Jun 7 15:07:56 2023 +0200

    test(plc4go/cbus): add tests for static helper
---
 plc4go/internal/eip/mock_EIPPlcTag_test.go         | 407 ---------------------
 plc4go/internal/eip/mock_PlcTag_test.go            | 407 +++++++++++++++++++++
 plc4go/internal/simulated/mock_Tag_test.go         |  28 +-
 .../cbus/readwrite/model/StaticHelper_test.go      | 300 +++++++++++++--
 4 files changed, 690 insertions(+), 452 deletions(-)

diff --git a/plc4go/internal/eip/mock_EIPPlcTag_test.go b/plc4go/internal/eip/mock_EIPPlcTag_test.go
deleted file mode 100644
index 449e7f6298..0000000000
--- a/plc4go/internal/eip/mock_EIPPlcTag_test.go
+++ /dev/null
@@ -1,407 +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.
- */
-
-// Code generated by mockery v2.28.2. DO NOT EDIT.
-
-package eip
-
-import (
-	context "context"
-
-	model "github.com/apache/plc4x/plc4go/pkg/api/model"
-	mock "github.com/stretchr/testify/mock"
-
-	readwritemodel "github.com/apache/plc4x/plc4go/protocols/eip/readwrite/model"
-
-	utils "github.com/apache/plc4x/plc4go/spi/utils"
-
-	values "github.com/apache/plc4x/plc4go/pkg/api/values"
-)
-
-// MockEIPPlcTag is an autogenerated mock type for the PlcTag type
-type MockEIPPlcTag struct {
-	mock.Mock
-}
-
-type MockEIPPlcTag_Expecter struct {
-	mock *mock.Mock
-}
-
-func (_m *MockEIPPlcTag) EXPECT() *MockEIPPlcTag_Expecter {
-	return &MockEIPPlcTag_Expecter{mock: &_m.Mock}
-}
-
-// GetAddressString provides a mock function with given fields:
-func (_m *MockEIPPlcTag) GetAddressString() string {
-	ret := _m.Called()
-
-	var r0 string
-	if rf, ok := ret.Get(0).(func() string); ok {
-		r0 = rf()
-	} else {
-		r0 = ret.Get(0).(string)
-	}
-
-	return r0
-}
-
-// MockEIPPlcTag_GetAddressString_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetAddressString'
-type MockEIPPlcTag_GetAddressString_Call struct {
-	*mock.Call
-}
-
-// GetAddressString is a helper method to define mock.On call
-func (_e *MockEIPPlcTag_Expecter) GetAddressString() *MockEIPPlcTag_GetAddressString_Call {
-	return &MockEIPPlcTag_GetAddressString_Call{Call: _e.mock.On("GetAddressString")}
-}
-
-func (_c *MockEIPPlcTag_GetAddressString_Call) Run(run func()) *MockEIPPlcTag_GetAddressString_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run()
-	})
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetAddressString_Call) Return(_a0 string) *MockEIPPlcTag_GetAddressString_Call {
-	_c.Call.Return(_a0)
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetAddressString_Call) RunAndReturn(run func() string) *MockEIPPlcTag_GetAddressString_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-// GetArrayInfo provides a mock function with given fields:
-func (_m *MockEIPPlcTag) GetArrayInfo() []model.ArrayInfo {
-	ret := _m.Called()
-
-	var r0 []model.ArrayInfo
-	if rf, ok := ret.Get(0).(func() []model.ArrayInfo); ok {
-		r0 = rf()
-	} else {
-		if ret.Get(0) != nil {
-			r0 = ret.Get(0).([]model.ArrayInfo)
-		}
-	}
-
-	return r0
-}
-
-// MockEIPPlcTag_GetArrayInfo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetArrayInfo'
-type MockEIPPlcTag_GetArrayInfo_Call struct {
-	*mock.Call
-}
-
-// GetArrayInfo is a helper method to define mock.On call
-func (_e *MockEIPPlcTag_Expecter) GetArrayInfo() *MockEIPPlcTag_GetArrayInfo_Call {
-	return &MockEIPPlcTag_GetArrayInfo_Call{Call: _e.mock.On("GetArrayInfo")}
-}
-
-func (_c *MockEIPPlcTag_GetArrayInfo_Call) Run(run func()) *MockEIPPlcTag_GetArrayInfo_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run()
-	})
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetArrayInfo_Call) Return(_a0 []model.ArrayInfo) *MockEIPPlcTag_GetArrayInfo_Call {
-	_c.Call.Return(_a0)
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetArrayInfo_Call) RunAndReturn(run func() []model.ArrayInfo) *MockEIPPlcTag_GetArrayInfo_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-// GetElementNb provides a mock function with given fields:
-func (_m *MockEIPPlcTag) GetElementNb() uint16 {
-	ret := _m.Called()
-
-	var r0 uint16
-	if rf, ok := ret.Get(0).(func() uint16); ok {
-		r0 = rf()
-	} else {
-		r0 = ret.Get(0).(uint16)
-	}
-
-	return r0
-}
-
-// MockEIPPlcTag_GetElementNb_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetElementNb'
-type MockEIPPlcTag_GetElementNb_Call struct {
-	*mock.Call
-}
-
-// GetElementNb is a helper method to define mock.On call
-func (_e *MockEIPPlcTag_Expecter) GetElementNb() *MockEIPPlcTag_GetElementNb_Call {
-	return &MockEIPPlcTag_GetElementNb_Call{Call: _e.mock.On("GetElementNb")}
-}
-
-func (_c *MockEIPPlcTag_GetElementNb_Call) Run(run func()) *MockEIPPlcTag_GetElementNb_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run()
-	})
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetElementNb_Call) Return(_a0 uint16) *MockEIPPlcTag_GetElementNb_Call {
-	_c.Call.Return(_a0)
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetElementNb_Call) RunAndReturn(run func() uint16) *MockEIPPlcTag_GetElementNb_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-// GetTag provides a mock function with given fields:
-func (_m *MockEIPPlcTag) GetTag() string {
-	ret := _m.Called()
-
-	var r0 string
-	if rf, ok := ret.Get(0).(func() string); ok {
-		r0 = rf()
-	} else {
-		r0 = ret.Get(0).(string)
-	}
-
-	return r0
-}
-
-// MockEIPPlcTag_GetTag_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTag'
-type MockEIPPlcTag_GetTag_Call struct {
-	*mock.Call
-}
-
-// GetTag is a helper method to define mock.On call
-func (_e *MockEIPPlcTag_Expecter) GetTag() *MockEIPPlcTag_GetTag_Call {
-	return &MockEIPPlcTag_GetTag_Call{Call: _e.mock.On("GetTag")}
-}
-
-func (_c *MockEIPPlcTag_GetTag_Call) Run(run func()) *MockEIPPlcTag_GetTag_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run()
-	})
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetTag_Call) Return(_a0 string) *MockEIPPlcTag_GetTag_Call {
-	_c.Call.Return(_a0)
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetTag_Call) RunAndReturn(run func() string) *MockEIPPlcTag_GetTag_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-// GetType provides a mock function with given fields:
-func (_m *MockEIPPlcTag) GetType() readwritemodel.CIPDataTypeCode {
-	ret := _m.Called()
-
-	var r0 readwritemodel.CIPDataTypeCode
-	if rf, ok := ret.Get(0).(func() readwritemodel.CIPDataTypeCode); ok {
-		r0 = rf()
-	} else {
-		r0 = ret.Get(0).(readwritemodel.CIPDataTypeCode)
-	}
-
-	return r0
-}
-
-// MockEIPPlcTag_GetType_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetType'
-type MockEIPPlcTag_GetType_Call struct {
-	*mock.Call
-}
-
-// GetType is a helper method to define mock.On call
-func (_e *MockEIPPlcTag_Expecter) GetType() *MockEIPPlcTag_GetType_Call {
-	return &MockEIPPlcTag_GetType_Call{Call: _e.mock.On("GetType")}
-}
-
-func (_c *MockEIPPlcTag_GetType_Call) Run(run func()) *MockEIPPlcTag_GetType_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run()
-	})
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetType_Call) Return(_a0 readwritemodel.CIPDataTypeCode) *MockEIPPlcTag_GetType_Call {
-	_c.Call.Return(_a0)
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetType_Call) RunAndReturn(run func() readwritemodel.CIPDataTypeCode) *MockEIPPlcTag_GetType_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-// GetValueType provides a mock function with given fields:
-func (_m *MockEIPPlcTag) GetValueType() values.PlcValueType {
-	ret := _m.Called()
-
-	var r0 values.PlcValueType
-	if rf, ok := ret.Get(0).(func() values.PlcValueType); ok {
-		r0 = rf()
-	} else {
-		r0 = ret.Get(0).(values.PlcValueType)
-	}
-
-	return r0
-}
-
-// MockEIPPlcTag_GetValueType_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetValueType'
-type MockEIPPlcTag_GetValueType_Call struct {
-	*mock.Call
-}
-
-// GetValueType is a helper method to define mock.On call
-func (_e *MockEIPPlcTag_Expecter) GetValueType() *MockEIPPlcTag_GetValueType_Call {
-	return &MockEIPPlcTag_GetValueType_Call{Call: _e.mock.On("GetValueType")}
-}
-
-func (_c *MockEIPPlcTag_GetValueType_Call) Run(run func()) *MockEIPPlcTag_GetValueType_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run()
-	})
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetValueType_Call) Return(_a0 values.PlcValueType) *MockEIPPlcTag_GetValueType_Call {
-	_c.Call.Return(_a0)
-	return _c
-}
-
-func (_c *MockEIPPlcTag_GetValueType_Call) RunAndReturn(run func() values.PlcValueType) *MockEIPPlcTag_GetValueType_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-// Serialize provides a mock function with given fields:
-func (_m *MockEIPPlcTag) Serialize() ([]byte, error) {
-	ret := _m.Called()
-
-	var r0 []byte
-	var r1 error
-	if rf, ok := ret.Get(0).(func() ([]byte, error)); ok {
-		return rf()
-	}
-	if rf, ok := ret.Get(0).(func() []byte); ok {
-		r0 = rf()
-	} else {
-		if ret.Get(0) != nil {
-			r0 = ret.Get(0).([]byte)
-		}
-	}
-
-	if rf, ok := ret.Get(1).(func() error); ok {
-		r1 = rf()
-	} else {
-		r1 = ret.Error(1)
-	}
-
-	return r0, r1
-}
-
-// MockEIPPlcTag_Serialize_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Serialize'
-type MockEIPPlcTag_Serialize_Call struct {
-	*mock.Call
-}
-
-// Serialize is a helper method to define mock.On call
-func (_e *MockEIPPlcTag_Expecter) Serialize() *MockEIPPlcTag_Serialize_Call {
-	return &MockEIPPlcTag_Serialize_Call{Call: _e.mock.On("Serialize")}
-}
-
-func (_c *MockEIPPlcTag_Serialize_Call) Run(run func()) *MockEIPPlcTag_Serialize_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run()
-	})
-	return _c
-}
-
-func (_c *MockEIPPlcTag_Serialize_Call) Return(_a0 []byte, _a1 error) *MockEIPPlcTag_Serialize_Call {
-	_c.Call.Return(_a0, _a1)
-	return _c
-}
-
-func (_c *MockEIPPlcTag_Serialize_Call) RunAndReturn(run func() ([]byte, error)) *MockEIPPlcTag_Serialize_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-// SerializeWithWriteBuffer provides a mock function with given fields: ctx, writeBuffer
-func (_m *MockEIPPlcTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
-	ret := _m.Called(ctx, writeBuffer)
-
-	var r0 error
-	if rf, ok := ret.Get(0).(func(context.Context, utils.WriteBuffer) error); ok {
-		r0 = rf(ctx, writeBuffer)
-	} else {
-		r0 = ret.Error(0)
-	}
-
-	return r0
-}
-
-// MockEIPPlcTag_SerializeWithWriteBuffer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SerializeWithWriteBuffer'
-type MockEIPPlcTag_SerializeWithWriteBuffer_Call struct {
-	*mock.Call
-}
-
-// SerializeWithWriteBuffer is a helper method to define mock.On call
-//   - ctx context.Context
-//   - writeBuffer utils.WriteBuffer
-func (_e *MockEIPPlcTag_Expecter) SerializeWithWriteBuffer(ctx interface{}, writeBuffer interface{}) *MockEIPPlcTag_SerializeWithWriteBuffer_Call {
-	return &MockEIPPlcTag_SerializeWithWriteBuffer_Call{Call: _e.mock.On("SerializeWithWriteBuffer", ctx, writeBuffer)}
-}
-
-func (_c *MockEIPPlcTag_SerializeWithWriteBuffer_Call) Run(run func(ctx context.Context, writeBuffer utils.WriteBuffer)) *MockEIPPlcTag_SerializeWithWriteBuffer_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run(args[0].(context.Context), args[1].(utils.WriteBuffer))
-	})
-	return _c
-}
-
-func (_c *MockEIPPlcTag_SerializeWithWriteBuffer_Call) Return(_a0 error) *MockEIPPlcTag_SerializeWithWriteBuffer_Call {
-	_c.Call.Return(_a0)
-	return _c
-}
-
-func (_c *MockEIPPlcTag_SerializeWithWriteBuffer_Call) RunAndReturn(run func(context.Context, utils.WriteBuffer) error) *MockEIPPlcTag_SerializeWithWriteBuffer_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-type mockConstructorTestingTNewMockEIPPlcTag interface {
-	mock.TestingT
-	Cleanup(func())
-}
-
-// NewMockEIPPlcTag creates a new instance of MockEIPPlcTag. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-func NewMockEIPPlcTag(t mockConstructorTestingTNewMockEIPPlcTag) *MockEIPPlcTag {
-	mock := &MockEIPPlcTag{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}
diff --git a/plc4go/internal/eip/mock_PlcTag_test.go b/plc4go/internal/eip/mock_PlcTag_test.go
new file mode 100644
index 0000000000..4d0bc4cc01
--- /dev/null
+++ b/plc4go/internal/eip/mock_PlcTag_test.go
@@ -0,0 +1,407 @@
+/*
+ * 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.
+ */
+
+// Code generated by mockery v2.28.2. DO NOT EDIT.
+
+package eip
+
+import (
+	context "context"
+
+	model "github.com/apache/plc4x/plc4go/pkg/api/model"
+	mock "github.com/stretchr/testify/mock"
+
+	readwritemodel "github.com/apache/plc4x/plc4go/protocols/eip/readwrite/model"
+
+	utils "github.com/apache/plc4x/plc4go/spi/utils"
+
+	values "github.com/apache/plc4x/plc4go/pkg/api/values"
+)
+
+// MockPlcTag is an autogenerated mock type for the PlcTag type
+type MockPlcTag struct {
+	mock.Mock
+}
+
+type MockPlcTag_Expecter struct {
+	mock *mock.Mock
+}
+
+func (_m *MockPlcTag) EXPECT() *MockPlcTag_Expecter {
+	return &MockPlcTag_Expecter{mock: &_m.Mock}
+}
+
+// GetAddressString provides a mock function with given fields:
+func (_m *MockPlcTag) GetAddressString() string {
+	ret := _m.Called()
+
+	var r0 string
+	if rf, ok := ret.Get(0).(func() string); ok {
+		r0 = rf()
+	} else {
+		r0 = ret.Get(0).(string)
+	}
+
+	return r0
+}
+
+// MockPlcTag_GetAddressString_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetAddressString'
+type MockPlcTag_GetAddressString_Call struct {
+	*mock.Call
+}
+
+// GetAddressString is a helper method to define mock.On call
+func (_e *MockPlcTag_Expecter) GetAddressString() *MockPlcTag_GetAddressString_Call {
+	return &MockPlcTag_GetAddressString_Call{Call: _e.mock.On("GetAddressString")}
+}
+
+func (_c *MockPlcTag_GetAddressString_Call) Run(run func()) *MockPlcTag_GetAddressString_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run()
+	})
+	return _c
+}
+
+func (_c *MockPlcTag_GetAddressString_Call) Return(_a0 string) *MockPlcTag_GetAddressString_Call {
+	_c.Call.Return(_a0)
+	return _c
+}
+
+func (_c *MockPlcTag_GetAddressString_Call) RunAndReturn(run func() string) *MockPlcTag_GetAddressString_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+// GetArrayInfo provides a mock function with given fields:
+func (_m *MockPlcTag) GetArrayInfo() []model.ArrayInfo {
+	ret := _m.Called()
+
+	var r0 []model.ArrayInfo
+	if rf, ok := ret.Get(0).(func() []model.ArrayInfo); ok {
+		r0 = rf()
+	} else {
+		if ret.Get(0) != nil {
+			r0 = ret.Get(0).([]model.ArrayInfo)
+		}
+	}
+
+	return r0
+}
+
+// MockPlcTag_GetArrayInfo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetArrayInfo'
+type MockPlcTag_GetArrayInfo_Call struct {
+	*mock.Call
+}
+
+// GetArrayInfo is a helper method to define mock.On call
+func (_e *MockPlcTag_Expecter) GetArrayInfo() *MockPlcTag_GetArrayInfo_Call {
+	return &MockPlcTag_GetArrayInfo_Call{Call: _e.mock.On("GetArrayInfo")}
+}
+
+func (_c *MockPlcTag_GetArrayInfo_Call) Run(run func()) *MockPlcTag_GetArrayInfo_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run()
+	})
+	return _c
+}
+
+func (_c *MockPlcTag_GetArrayInfo_Call) Return(_a0 []model.ArrayInfo) *MockPlcTag_GetArrayInfo_Call {
+	_c.Call.Return(_a0)
+	return _c
+}
+
+func (_c *MockPlcTag_GetArrayInfo_Call) RunAndReturn(run func() []model.ArrayInfo) *MockPlcTag_GetArrayInfo_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+// GetElementNb provides a mock function with given fields:
+func (_m *MockPlcTag) GetElementNb() uint16 {
+	ret := _m.Called()
+
+	var r0 uint16
+	if rf, ok := ret.Get(0).(func() uint16); ok {
+		r0 = rf()
+	} else {
+		r0 = ret.Get(0).(uint16)
+	}
+
+	return r0
+}
+
+// MockPlcTag_GetElementNb_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetElementNb'
+type MockPlcTag_GetElementNb_Call struct {
+	*mock.Call
+}
+
+// GetElementNb is a helper method to define mock.On call
+func (_e *MockPlcTag_Expecter) GetElementNb() *MockPlcTag_GetElementNb_Call {
+	return &MockPlcTag_GetElementNb_Call{Call: _e.mock.On("GetElementNb")}
+}
+
+func (_c *MockPlcTag_GetElementNb_Call) Run(run func()) *MockPlcTag_GetElementNb_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run()
+	})
+	return _c
+}
+
+func (_c *MockPlcTag_GetElementNb_Call) Return(_a0 uint16) *MockPlcTag_GetElementNb_Call {
+	_c.Call.Return(_a0)
+	return _c
+}
+
+func (_c *MockPlcTag_GetElementNb_Call) RunAndReturn(run func() uint16) *MockPlcTag_GetElementNb_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+// GetTag provides a mock function with given fields:
+func (_m *MockPlcTag) GetTag() string {
+	ret := _m.Called()
+
+	var r0 string
+	if rf, ok := ret.Get(0).(func() string); ok {
+		r0 = rf()
+	} else {
+		r0 = ret.Get(0).(string)
+	}
+
+	return r0
+}
+
+// MockPlcTag_GetTag_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTag'
+type MockPlcTag_GetTag_Call struct {
+	*mock.Call
+}
+
+// GetTag is a helper method to define mock.On call
+func (_e *MockPlcTag_Expecter) GetTag() *MockPlcTag_GetTag_Call {
+	return &MockPlcTag_GetTag_Call{Call: _e.mock.On("GetTag")}
+}
+
+func (_c *MockPlcTag_GetTag_Call) Run(run func()) *MockPlcTag_GetTag_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run()
+	})
+	return _c
+}
+
+func (_c *MockPlcTag_GetTag_Call) Return(_a0 string) *MockPlcTag_GetTag_Call {
+	_c.Call.Return(_a0)
+	return _c
+}
+
+func (_c *MockPlcTag_GetTag_Call) RunAndReturn(run func() string) *MockPlcTag_GetTag_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+// GetType provides a mock function with given fields:
+func (_m *MockPlcTag) GetType() readwritemodel.CIPDataTypeCode {
+	ret := _m.Called()
+
+	var r0 readwritemodel.CIPDataTypeCode
+	if rf, ok := ret.Get(0).(func() readwritemodel.CIPDataTypeCode); ok {
+		r0 = rf()
+	} else {
+		r0 = ret.Get(0).(readwritemodel.CIPDataTypeCode)
+	}
+
+	return r0
+}
+
+// MockPlcTag_GetType_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetType'
+type MockPlcTag_GetType_Call struct {
+	*mock.Call
+}
+
+// GetType is a helper method to define mock.On call
+func (_e *MockPlcTag_Expecter) GetType() *MockPlcTag_GetType_Call {
+	return &MockPlcTag_GetType_Call{Call: _e.mock.On("GetType")}
+}
+
+func (_c *MockPlcTag_GetType_Call) Run(run func()) *MockPlcTag_GetType_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run()
+	})
+	return _c
+}
+
+func (_c *MockPlcTag_GetType_Call) Return(_a0 readwritemodel.CIPDataTypeCode) *MockPlcTag_GetType_Call {
+	_c.Call.Return(_a0)
+	return _c
+}
+
+func (_c *MockPlcTag_GetType_Call) RunAndReturn(run func() readwritemodel.CIPDataTypeCode) *MockPlcTag_GetType_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+// GetValueType provides a mock function with given fields:
+func (_m *MockPlcTag) GetValueType() values.PlcValueType {
+	ret := _m.Called()
+
+	var r0 values.PlcValueType
+	if rf, ok := ret.Get(0).(func() values.PlcValueType); ok {
+		r0 = rf()
+	} else {
+		r0 = ret.Get(0).(values.PlcValueType)
+	}
+
+	return r0
+}
+
+// MockPlcTag_GetValueType_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetValueType'
+type MockPlcTag_GetValueType_Call struct {
+	*mock.Call
+}
+
+// GetValueType is a helper method to define mock.On call
+func (_e *MockPlcTag_Expecter) GetValueType() *MockPlcTag_GetValueType_Call {
+	return &MockPlcTag_GetValueType_Call{Call: _e.mock.On("GetValueType")}
+}
+
+func (_c *MockPlcTag_GetValueType_Call) Run(run func()) *MockPlcTag_GetValueType_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run()
+	})
+	return _c
+}
+
+func (_c *MockPlcTag_GetValueType_Call) Return(_a0 values.PlcValueType) *MockPlcTag_GetValueType_Call {
+	_c.Call.Return(_a0)
+	return _c
+}
+
+func (_c *MockPlcTag_GetValueType_Call) RunAndReturn(run func() values.PlcValueType) *MockPlcTag_GetValueType_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+// Serialize provides a mock function with given fields:
+func (_m *MockPlcTag) Serialize() ([]byte, error) {
+	ret := _m.Called()
+
+	var r0 []byte
+	var r1 error
+	if rf, ok := ret.Get(0).(func() ([]byte, error)); ok {
+		return rf()
+	}
+	if rf, ok := ret.Get(0).(func() []byte); ok {
+		r0 = rf()
+	} else {
+		if ret.Get(0) != nil {
+			r0 = ret.Get(0).([]byte)
+		}
+	}
+
+	if rf, ok := ret.Get(1).(func() error); ok {
+		r1 = rf()
+	} else {
+		r1 = ret.Error(1)
+	}
+
+	return r0, r1
+}
+
+// MockPlcTag_Serialize_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Serialize'
+type MockPlcTag_Serialize_Call struct {
+	*mock.Call
+}
+
+// Serialize is a helper method to define mock.On call
+func (_e *MockPlcTag_Expecter) Serialize() *MockPlcTag_Serialize_Call {
+	return &MockPlcTag_Serialize_Call{Call: _e.mock.On("Serialize")}
+}
+
+func (_c *MockPlcTag_Serialize_Call) Run(run func()) *MockPlcTag_Serialize_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run()
+	})
+	return _c
+}
+
+func (_c *MockPlcTag_Serialize_Call) Return(_a0 []byte, _a1 error) *MockPlcTag_Serialize_Call {
+	_c.Call.Return(_a0, _a1)
+	return _c
+}
+
+func (_c *MockPlcTag_Serialize_Call) RunAndReturn(run func() ([]byte, error)) *MockPlcTag_Serialize_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+// SerializeWithWriteBuffer provides a mock function with given fields: ctx, writeBuffer
+func (_m *MockPlcTag) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	ret := _m.Called(ctx, writeBuffer)
+
+	var r0 error
+	if rf, ok := ret.Get(0).(func(context.Context, utils.WriteBuffer) error); ok {
+		r0 = rf(ctx, writeBuffer)
+	} else {
+		r0 = ret.Error(0)
+	}
+
+	return r0
+}
+
+// MockPlcTag_SerializeWithWriteBuffer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SerializeWithWriteBuffer'
+type MockPlcTag_SerializeWithWriteBuffer_Call struct {
+	*mock.Call
+}
+
+// SerializeWithWriteBuffer is a helper method to define mock.On call
+//   - ctx context.Context
+//   - writeBuffer utils.WriteBuffer
+func (_e *MockPlcTag_Expecter) SerializeWithWriteBuffer(ctx interface{}, writeBuffer interface{}) *MockPlcTag_SerializeWithWriteBuffer_Call {
+	return &MockPlcTag_SerializeWithWriteBuffer_Call{Call: _e.mock.On("SerializeWithWriteBuffer", ctx, writeBuffer)}
+}
+
+func (_c *MockPlcTag_SerializeWithWriteBuffer_Call) Run(run func(ctx context.Context, writeBuffer utils.WriteBuffer)) *MockPlcTag_SerializeWithWriteBuffer_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run(args[0].(context.Context), args[1].(utils.WriteBuffer))
+	})
+	return _c
+}
+
+func (_c *MockPlcTag_SerializeWithWriteBuffer_Call) Return(_a0 error) *MockPlcTag_SerializeWithWriteBuffer_Call {
+	_c.Call.Return(_a0)
+	return _c
+}
+
+func (_c *MockPlcTag_SerializeWithWriteBuffer_Call) RunAndReturn(run func(context.Context, utils.WriteBuffer) error) *MockPlcTag_SerializeWithWriteBuffer_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+type mockConstructorTestingTNewMockPlcTag interface {
+	mock.TestingT
+	Cleanup(func())
+}
+
+// NewMockPlcTag creates a new instance of MockPlcTag. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+func NewMockPlcTag(t mockConstructorTestingTNewMockPlcTag) *MockPlcTag {
+	mock := &MockPlcTag{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
diff --git a/plc4go/internal/simulated/mock_Tag_test.go b/plc4go/internal/simulated/mock_Tag_test.go
index 0e0e84551f..4c01d7a522 100644
--- a/plc4go/internal/simulated/mock_Tag_test.go
+++ b/plc4go/internal/simulated/mock_Tag_test.go
@@ -128,16 +128,14 @@ func (_c *MockTag_GetArrayInfo_Call) RunAndReturn(run func() []model.ArrayInfo)
 }
 
 // GetDataTypeSize provides a mock function with given fields:
-func (_m *MockTag) GetDataTypeSize() *readwritemodel.SimulatedDataTypeSizes {
+func (_m *MockTag) GetDataTypeSize() readwritemodel.SimulatedDataTypeSizes {
 	ret := _m.Called()
 
-	var r0 *readwritemodel.SimulatedDataTypeSizes
-	if rf, ok := ret.Get(0).(func() *readwritemodel.SimulatedDataTypeSizes); ok {
+	var r0 readwritemodel.SimulatedDataTypeSizes
+	if rf, ok := ret.Get(0).(func() readwritemodel.SimulatedDataTypeSizes); ok {
 		r0 = rf()
 	} else {
-		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(*readwritemodel.SimulatedDataTypeSizes)
-		}
+		r0 = ret.Get(0).(readwritemodel.SimulatedDataTypeSizes)
 	}
 
 	return r0
@@ -160,12 +158,12 @@ func (_c *MockTag_GetDataTypeSize_Call) Run(run func()) *MockTag_GetDataTypeSize
 	return _c
 }
 
-func (_c *MockTag_GetDataTypeSize_Call) Return(_a0 *readwritemodel.SimulatedDataTypeSizes) *MockTag_GetDataTypeSize_Call {
+func (_c *MockTag_GetDataTypeSize_Call) Return(_a0 readwritemodel.SimulatedDataTypeSizes) *MockTag_GetDataTypeSize_Call {
 	_c.Call.Return(_a0)
 	return _c
 }
 
-func (_c *MockTag_GetDataTypeSize_Call) RunAndReturn(run func() *readwritemodel.SimulatedDataTypeSizes) *MockTag_GetDataTypeSize_Call {
+func (_c *MockTag_GetDataTypeSize_Call) RunAndReturn(run func() readwritemodel.SimulatedDataTypeSizes) *MockTag_GetDataTypeSize_Call {
 	_c.Call.Return(run)
 	return _c
 }
@@ -212,16 +210,14 @@ func (_c *MockTag_GetName_Call) RunAndReturn(run func() string) *MockTag_GetName
 }
 
 // GetTagType provides a mock function with given fields:
-func (_m *MockTag) GetTagType() *TagType {
+func (_m *MockTag) GetTagType() TagType {
 	ret := _m.Called()
 
-	var r0 *TagType
-	if rf, ok := ret.Get(0).(func() *TagType); ok {
+	var r0 TagType
+	if rf, ok := ret.Get(0).(func() TagType); ok {
 		r0 = rf()
 	} else {
-		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(*TagType)
-		}
+		r0 = ret.Get(0).(TagType)
 	}
 
 	return r0
@@ -244,12 +240,12 @@ func (_c *MockTag_GetTagType_Call) Run(run func()) *MockTag_GetTagType_Call {
 	return _c
 }
 
-func (_c *MockTag_GetTagType_Call) Return(_a0 *TagType) *MockTag_GetTagType_Call {
+func (_c *MockTag_GetTagType_Call) Return(_a0 TagType) *MockTag_GetTagType_Call {
 	_c.Call.Return(_a0)
 	return _c
 }
 
-func (_c *MockTag_GetTagType_Call) RunAndReturn(run func() *TagType) *MockTag_GetTagType_Call {
+func (_c *MockTag_GetTagType_Call) RunAndReturn(run func() TagType) *MockTag_GetTagType_Call {
 	_c.Call.Return(run)
 	return _c
 }
diff --git a/plc4go/protocols/cbus/readwrite/model/StaticHelper_test.go b/plc4go/protocols/cbus/readwrite/model/StaticHelper_test.go
index b7e742bd75..8ee2fd6d7d 100644
--- a/plc4go/protocols/cbus/readwrite/model/StaticHelper_test.go
+++ b/plc4go/protocols/cbus/readwrite/model/StaticHelper_test.go
@@ -35,12 +35,26 @@ func TestCalculateChecksum(t *testing.T) {
 	tests := []struct {
 		name    string
 		args    args
+		setup   func(t *testing.T, args *args)
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "check it (not enabled)",
+		},
+		{
+			name: "check it",
+			args: args{
+				writeBuffer: utils.NewWriteBufferByteBased(),
+				message:     NewZoneStatus(1),
+				srchk:       true,
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
+			if tt.setup != nil {
+				tt.setup(t, &tt.args)
+			}
 			if err := CalculateChecksum(tt.args.writeBuffer, tt.args.message, tt.args.srchk); (err != nil) != tt.wantErr {
 				t.Errorf("CalculateChecksum() error = %v, wantErr %v", err, tt.wantErr)
 			}
@@ -57,7 +71,12 @@ func TestKnowsAccessControlCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "no",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -77,7 +96,13 @@ func TestKnowsAirConditioningCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "yes",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+			want: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -97,7 +122,12 @@ func TestKnowsCALCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "no",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -117,7 +147,12 @@ func TestKnowsClockAndTimekeepingCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "no",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -137,7 +172,12 @@ func TestKnowsEnableControlCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "no",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -157,7 +197,12 @@ func TestKnowsErrorReportingCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "no",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -177,7 +222,13 @@ func TestKnowsLightingCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "yes",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+			want: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -197,7 +248,12 @@ func TestKnowsMeasurementCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "no",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -217,7 +273,13 @@ func TestKnowsMediaTransportControlCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "yes",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+			want: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -237,7 +299,12 @@ func TestKnowsMeteringCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "no",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -257,7 +324,13 @@ func TestKnowsSecurityCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "yes",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+			want: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -277,7 +350,12 @@ func TestKnowsTelephonyCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "no",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -297,7 +375,12 @@ func TestKnowsTemperatureBroadcastCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "no",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -317,7 +400,13 @@ func TestKnowsTriggerControlCommandTypeContainer(t *testing.T) {
 		args args
 		want bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "yes",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+			want: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -340,7 +429,37 @@ func TestReadAndValidateChecksum(t *testing.T) {
 		want    Checksum
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "don't do it",
+		},
+		{
+			name: "do it wrong message",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+				message:    nil,
+				srchk:      true,
+			},
+			wantErr: true,
+		},
+		{
+			name: "do it",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte("00")),
+				message:    NewZoneStatus(12),
+				srchk:      true,
+			},
+			want:    NewChecksum(0),
+			wantErr: false,
+		},
+		{
+			name: "do it wrong checksum",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte("AFFE")),
+				message:    NewZoneStatus(12),
+				srchk:      true,
+			},
+			wantErr: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -350,7 +469,7 @@ func TestReadAndValidateChecksum(t *testing.T) {
 				return
 			}
 			if !assert.Equal(t, tt.want, got) {
-				t.Errorf("ReadAndValidateChecksum() got = %v, want %v", got, tt.want)
+				t.Errorf("ReadAndValidateChecksum() got = \n%v, want \n%v", got, tt.want)
 			}
 		})
 	}
@@ -366,7 +485,20 @@ func TestReadCALData(t *testing.T) {
 		want    CALData
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "failing",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+			wantErr: true,
+		},
+		{
+			name: "cal data",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte("2101")),
+			},
+			want: NewCALDataIdentify(Attribute_Type, CALCommandTypeContainer_CALCommandIdentify, nil, nil),
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -394,7 +526,43 @@ func TestReadCBusCommand(t *testing.T) {
 		want    CBusCommand
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "failing",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+			wantErr: true,
+		},
+		{
+			name: "cbus command data",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte("46310900A400410600")),
+			},
+			want: NewCBusCommandPointToPoint(
+				NewCBusPointToPointCommandIndirect(
+					NewBridgeAddress(49),
+					NewNetworkRoute(NewNetworkProtocolControlInformation(1, 1), nil),
+					NewUnitAddress(0),
+					12553,
+					NewCALDataWrite(
+						Parameter_UNKNOWN_01,
+						65,
+						NewParameterValueRaw([]byte{6, 00}, 2),
+						CALCommandTypeContainer_CALCommandWrite_4Bytes,
+						nil,
+						nil,
+					),
+					nil,
+				),
+				NewCBusHeader(
+					PriorityClass_Class3,
+					false,
+					0,
+					DestinationAddressType_PointToPoint,
+				),
+				nil,
+			),
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -404,7 +572,7 @@ func TestReadCBusCommand(t *testing.T) {
 				return
 			}
 			if !assert.Equal(t, tt.want, got) {
-				t.Errorf("ReadCBusCommand() got = %v, want %v", got, tt.want)
+				t.Errorf("ReadCBusCommand() got = \n%v, want \n%v", got, tt.want)
 			}
 		})
 	}
@@ -423,7 +591,22 @@ func TestReadEncodedReply(t *testing.T) {
 		want    EncodedReply
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "failing",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+			wantErr: true,
+		},
+		{
+			name: "encoded reply",
+			args: args{
+				readBuffer:     utils.NewReadBufferByteBased([]byte("8510020000FF6A")),
+				options:        NewCBusOptions(false, false, false, false, false, false, false, false, false),
+				requestContext: NewRequestContext(false),
+			},
+			wantErr: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -449,7 +632,13 @@ func TestWriteCALData(t *testing.T) {
 		args    args
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "write something",
+			args: args{
+				writeBuffer: utils.NewWriteBufferBoxBased(),
+				calData:     NewCALDataReset(0, nil, nil),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -470,7 +659,13 @@ func TestWriteCBusCommand(t *testing.T) {
 		args    args
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "write something",
+			args: args{
+				writeBuffer: utils.NewWriteBufferBoxBased(),
+				cbusCommand: NewCBusCommandDeviceManagement(0, 0, NewCBusHeader(0, false, 0, 0), nil),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -491,7 +686,27 @@ func TestWriteEncodedReply(t *testing.T) {
 		args    args
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "write something",
+			args: args{
+				writeBuffer: utils.NewWriteBufferBoxBased(),
+				encodedReply: NewEncodedReplyCALReply(
+					NewCALReplyShort(
+						0,
+						NewCALDataReset(
+							0,
+							nil,
+							NewRequestContext(false),
+						),
+						nil,
+						NewRequestContext(false),
+					),
+					0,
+					nil,
+					NewRequestContext(false),
+				),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -512,7 +727,9 @@ func Test_encodeHexUpperCase(t *testing.T) {
 		args args
 		want int
 	}{
-		// TODO: Add test cases.
+		{
+			name: "encode nothing",
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -557,7 +774,13 @@ func Test_getChecksum(t *testing.T) {
 		want    byte
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "get it",
+			args: args{
+				message: NewZoneStatus(0),
+			},
+			wantErr: false,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -585,7 +808,14 @@ func Test_readBytesFromHex(t *testing.T) {
 		want    []byte
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "read it",
+			args: args{
+				readBuffer: utils.NewReadBufferByteBased([]byte{1, 2, 3, 4}),
+			},
+			wantErr: true,
+		},
+		// TODO: add more tests
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -612,7 +842,13 @@ func Test_writeSerializableToHex(t *testing.T) {
 		args    args
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "write it",
+			args: args{
+				writeBuffer:  utils.NewWriteBufferBoxBased(),
+				serializable: NewZoneStatus(0),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -634,7 +870,13 @@ func Test_writeToHex(t *testing.T) {
 		args    args
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "write it",
+			args: args{
+				writeBuffer:  utils.NewWriteBufferBoxBased(),
+				bytesToWrite: []byte{1, 2, 3, 4},
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {


[plc4x] 01/03: refactor(plc4go): deduplicate package name out of struct names

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 524c2c836fa78e8843dc525471adf45da856fedd
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Jun 7 13:57:45 2023 +0200

    refactor(plc4go): deduplicate package name out of struct names
---
 plc4go/internal/eip/{EipDriver.go => Driver.go}                 | 0
 plc4go/internal/modbus/{ModbusAsciiDriver.go => AsciiDriver.go} | 8 ++++----
 plc4go/internal/modbus/{ModbusRtuDriver.go => RtuDriver.go}     | 8 ++++----
 plc4go/internal/modbus/{ModbusTcpDriver.go => TcpDriver.go}     | 8 ++++----
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/plc4go/internal/eip/EipDriver.go b/plc4go/internal/eip/Driver.go
similarity index 100%
rename from plc4go/internal/eip/EipDriver.go
rename to plc4go/internal/eip/Driver.go
diff --git a/plc4go/internal/modbus/ModbusAsciiDriver.go b/plc4go/internal/modbus/AsciiDriver.go
similarity index 92%
rename from plc4go/internal/modbus/ModbusAsciiDriver.go
rename to plc4go/internal/modbus/AsciiDriver.go
index 783f1327ac..4d77c1fb9d 100644
--- a/plc4go/internal/modbus/ModbusAsciiDriver.go
+++ b/plc4go/internal/modbus/AsciiDriver.go
@@ -34,21 +34,21 @@ import (
 	"strconv"
 )
 
-type ModbusAsciiDriver struct {
+type AsciiDriver struct {
 	_default.DefaultDriver
 
 	log zerolog.Logger // TODO: use it
 }
 
-func NewModbusAsciiDriver(_options ...options.WithOption) *ModbusAsciiDriver {
-	driver := &ModbusAsciiDriver{
+func NewModbusAsciiDriver(_options ...options.WithOption) *AsciiDriver {
+	driver := &AsciiDriver{
 		log: options.ExtractCustomLogger(_options...),
 	}
 	driver.DefaultDriver = _default.NewDefaultDriver(driver, "modbus-ascii", "Modbus ASCII", "serial", NewTagHandler())
 	return driver
 }
 
-func (m ModbusAsciiDriver) GetConnectionWithContext(ctx context.Context, transportUrl url.URL, transports map[string]transports.Transport, connectionOptions map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
+func (m AsciiDriver) GetConnectionWithContext(ctx context.Context, transportUrl url.URL, transports map[string]transports.Transport, connectionOptions map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
 	m.log.Debug().Stringer("transportUrl", &transportUrl).Msgf("Get connection for transport url with %d transport(s) and %d option(s)", len(transports), len(connectionOptions))
 	// Get an the transport specified in the url
 	transport, ok := transports[transportUrl.Scheme]
diff --git a/plc4go/internal/modbus/ModbusRtuDriver.go b/plc4go/internal/modbus/RtuDriver.go
similarity index 92%
rename from plc4go/internal/modbus/ModbusRtuDriver.go
rename to plc4go/internal/modbus/RtuDriver.go
index 62120ca44f..7e285e0fc6 100644
--- a/plc4go/internal/modbus/ModbusRtuDriver.go
+++ b/plc4go/internal/modbus/RtuDriver.go
@@ -34,21 +34,21 @@ import (
 	"strconv"
 )
 
-type ModbusRtuDriver struct {
+type RtuDriver struct {
 	_default.DefaultDriver
 
 	log zerolog.Logger // TODO: use it
 }
 
-func NewModbusRtuDriver(_options ...options.WithOption) *ModbusRtuDriver {
-	driver := &ModbusRtuDriver{
+func NewModbusRtuDriver(_options ...options.WithOption) *RtuDriver {
+	driver := &RtuDriver{
 		log: options.ExtractCustomLogger(_options...),
 	}
 	driver.DefaultDriver = _default.NewDefaultDriver(driver, "modbus-rtu", "Modbus RTU", "serial", NewTagHandler())
 	return driver
 }
 
-func (m ModbusRtuDriver) GetConnectionWithContext(ctx context.Context, transportUrl url.URL, transports map[string]transports.Transport, driverOptions map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
+func (m RtuDriver) GetConnectionWithContext(ctx context.Context, transportUrl url.URL, transports map[string]transports.Transport, driverOptions map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
 	m.log.Debug().Stringer("transportUrl", &transportUrl).Msgf("Get connection for transport url with %d transport(s) and %d option(s)", len(transports), len(driverOptions))
 	// Get an the transport specified in the url
 	transport, ok := transports[transportUrl.Scheme]
diff --git a/plc4go/internal/modbus/ModbusTcpDriver.go b/plc4go/internal/modbus/TcpDriver.go
similarity index 92%
rename from plc4go/internal/modbus/ModbusTcpDriver.go
rename to plc4go/internal/modbus/TcpDriver.go
index 7267bdede8..ffacff0073 100644
--- a/plc4go/internal/modbus/ModbusTcpDriver.go
+++ b/plc4go/internal/modbus/TcpDriver.go
@@ -34,21 +34,21 @@ import (
 	"strconv"
 )
 
-type ModbusTcpDriver struct {
+type TcpDriver struct {
 	_default.DefaultDriver
 
 	log zerolog.Logger // TODO: use it
 }
 
-func NewModbusTcpDriver(_options ...options.WithOption) *ModbusTcpDriver {
-	driver := &ModbusTcpDriver{
+func NewModbusTcpDriver(_options ...options.WithOption) *TcpDriver {
+	driver := &TcpDriver{
 		log: options.ExtractCustomLogger(_options...),
 	}
 	driver.DefaultDriver = _default.NewDefaultDriver(driver, "modbus-tcp", "Modbus TCP", "tcp", NewTagHandler())
 	return driver
 }
 
-func (m ModbusTcpDriver) GetConnectionWithContext(ctx context.Context, transportUrl url.URL, transports map[string]transports.Transport, driverOptions map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
+func (m TcpDriver) GetConnectionWithContext(ctx context.Context, transportUrl url.URL, transports map[string]transports.Transport, driverOptions map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
 	m.log.Debug().Stringer("transportUrl", &transportUrl).Msgf("Get connection for transport url with %d transport(s) and %d option(s)", len(transports), len(driverOptions))
 	// Get an the transport specified in the url
 	transport, ok := transports[transportUrl.Scheme]


[plc4x] 02/03: refactor(plc4go): general QC pass

Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 41b82bd16f83ed6e0b4f94e64fc6996b2e599523
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Jun 7 14:20:22 2023 +0200

    refactor(plc4go): general QC pass
---
 plc4go/internal/ads/Browser.go                   |   2 +-
 plc4go/internal/bacnetip/ApplicationModule.go    |   2 +-
 plc4go/internal/bacnetip/Discoverer.go           |   4 +-
 plc4go/internal/eip/Reader.go                    |   8 +-
 plc4go/internal/eip/Tag.go                       |   4 +-
 plc4go/internal/eip/Writer.go                    |   2 +-
 plc4go/internal/eip/mock_EIPPlcTag_test.go       |   2 +-
 plc4go/internal/modbus/Reader.go                 |   4 +-
 plc4go/internal/modbus/Tag.go                    |   4 +-
 plc4go/internal/modbus/Writer.go                 |   2 +-
 plc4go/internal/simulated/Device.go              |  21 ++--
 plc4go/internal/simulated/Device_test.go         |  30 ++++--
 plc4go/internal/simulated/Reader_test.go         |   8 +-
 plc4go/internal/simulated/Tag.go                 |   6 +-
 plc4go/internal/simulated/Tag_test.go            |   2 +-
 plc4go/internal/simulated/Writer_test.go         |  14 +--
 plc4go/pkg/api/cache/connectionContainer_test.go |   7 +-
 plc4go/pkg/api/model/plc_response_code.go        |   2 +-
 plc4go/pkg/api/model/plc_response_code_test.go   |   7 +-
 plc4go/spi/default/testTransportInstance_test.go |  83 ---------------
 plc4go/spi/model/DefaultPlcTagRequest_test.go    |  17 ++-
 plc4go/spi/tracer/Tracer.go                      |   2 +-
 plc4go/spi/tracer/mock_Provider_test.go          | 127 +++++++++++++++++++++++
 plc4go/spi/tracer/mock_TracerProvider_test.go    | 127 -----------------------
 plc4go/spi/utils/ReadBufferJsonBased_test.go     |   5 +-
 plc4go/tools/plc4xgenerator/gen.go               |   3 +-
 26 files changed, 223 insertions(+), 272 deletions(-)

diff --git a/plc4go/internal/ads/Browser.go b/plc4go/internal/ads/Browser.go
index 4a0590d2ba..e380903fe7 100644
--- a/plc4go/internal/ads/Browser.go
+++ b/plc4go/internal/ads/Browser.go
@@ -109,7 +109,7 @@ func (m *Connection) filterSymbols(filterExpression string) []apiModel.PlcBrowse
 
 func (m *Connection) filterDataTypes(parentName string, currentType driverModel.AdsDataTypeTableEntry, currentPath string, remainingAddressSegments []string) []apiModel.PlcBrowseItem {
 	if len(remainingAddressSegments) == 0 {
-		arrayInfo := []apiModel.ArrayInfo{}
+		var arrayInfo []apiModel.ArrayInfo
 		for _, ai := range currentType.GetArrayInfo() {
 			arrayInfo = append(arrayInfo, &spiModel.DefaultArrayInfo{
 				LowerBound: ai.GetLowerBound(),
diff --git a/plc4go/internal/bacnetip/ApplicationModule.go b/plc4go/internal/bacnetip/ApplicationModule.go
index 7cc45b36ff..39a04d9812 100644
--- a/plc4go/internal/bacnetip/ApplicationModule.go
+++ b/plc4go/internal/bacnetip/ApplicationModule.go
@@ -355,7 +355,7 @@ func (a *Application) IterObjects() []*LocalDeviceObject {
 // TODO: match that with readWriteModel.BACnetServicesSupported
 func (a *Application) GetServicesSupported() []string {
 	servicesSupported := make([]string, 0, len(a.helpers))
-	for key, _ := range a.helpers {
+	for key := range a.helpers {
 		servicesSupported = append(servicesSupported, key)
 	}
 	return servicesSupported
diff --git a/plc4go/internal/bacnetip/Discoverer.go b/plc4go/internal/bacnetip/Discoverer.go
index 9989a0d6b3..6507a86b96 100644
--- a/plc4go/internal/bacnetip/Discoverer.go
+++ b/plc4go/internal/bacnetip/Discoverer.go
@@ -498,7 +498,7 @@ func whoHasObjectName(objectName string) option {
 	}
 }
 
-func NewProtocolSpecificOptions(options ...option) (*protocolSpecificOptions, error) {
+func newProtocolSpecificOptions(options ...option) (*protocolSpecificOptions, error) {
 	var specificOptions protocolSpecificOptions
 	for _, _option := range options {
 		if parseErr := _option(&specificOptions); parseErr != nil {
@@ -620,7 +620,7 @@ func extractProtocolSpecificOptions(discoveryOptions []options.WithDiscoveryOpti
 			collectedOptions = append(collectedOptions, whoHasObjectName(name))
 		}
 	}
-	return NewProtocolSpecificOptions(collectedOptions...)
+	return newProtocolSpecificOptions(collectedOptions...)
 }
 
 func exactlyOneInt(filteredOptionMap map[string][]any, key string) (int, error) {
diff --git a/plc4go/internal/eip/Reader.go b/plc4go/internal/eip/Reader.go
index 81459228a4..83980fc6d2 100644
--- a/plc4go/internal/eip/Reader.go
+++ b/plc4go/internal/eip/Reader.go
@@ -75,7 +75,7 @@ func (m *Reader) Read(ctx context.Context, readRequest apiModel.PlcReadRequest)
 		classSegment := readWriteModel.NewLogicalSegment(readWriteModel.NewClassID(0, 6))
 		instanceSegment := readWriteModel.NewLogicalSegment(readWriteModel.NewInstanceID(0, 1))
 		for _, tagName := range readRequest.GetTagNames() {
-			plcTag := readRequest.GetTag(tagName).(EIPPlcTag)
+			plcTag := readRequest.GetTag(tagName).(PlcTag)
 			tag := plcTag.GetTag()
 			elementsNb := uint16(1)
 			if plcTag.GetElementNb() > 1 {
@@ -206,7 +206,7 @@ func (m *Reader) ToPlc4xReadResponse(response readWriteModel.CipService, readReq
 	case readWriteModel.CipReadResponseExactly: // only 1 tag
 		cipReadResponse := response
 		tagName := readRequest.GetTagNames()[0]
-		tag := readRequest.GetTag(tagName).(EIPPlcTag)
+		tag := readRequest.GetTag(tagName).(PlcTag)
 		code := decodeResponseCode(cipReadResponse.GetStatus())
 		var plcValue values.PlcValue
 		_type := cipReadResponse.GetData().GetDataType()
@@ -244,7 +244,7 @@ func (m *Reader) ToPlc4xReadResponse(response readWriteModel.CipService, readReq
 		}
 		services := readWriteModel.NewServices(multipleServiceResponse.GetOffsets(), arr, uint16(0))
 		for i, tagName := range readRequest.GetTagNames() {
-			tag := readRequest.GetTag(tagName).(EIPPlcTag)
+			tag := readRequest.GetTag(tagName).(PlcTag)
 			if cipReadResponse, ok := services.Services[i].(readWriteModel.CipReadResponse); ok {
 				code := decodeResponseCode(cipReadResponse.GetStatus())
 				_type := cipReadResponse.GetData().GetDataType()
@@ -273,7 +273,7 @@ func (m *Reader) ToPlc4xReadResponse(response readWriteModel.CipService, readReq
 	return spiModel.NewDefaultPlcReadResponse(readRequest, responseCodes, plcValues), nil
 }
 
-func parsePlcValue(tag EIPPlcTag, data utils.ReadBufferByteBased, _type readWriteModel.CIPDataTypeCode) (values.PlcValue, error) {
+func parsePlcValue(tag PlcTag, data utils.ReadBufferByteBased, _type readWriteModel.CIPDataTypeCode) (values.PlcValue, error) {
 	nb := tag.GetElementNb()
 	if nb > 1 {
 		list := make([]values.PlcValue, 0)
diff --git a/plc4go/internal/eip/Tag.go b/plc4go/internal/eip/Tag.go
index 799e24cbf1..c7029c59c3 100644
--- a/plc4go/internal/eip/Tag.go
+++ b/plc4go/internal/eip/Tag.go
@@ -29,7 +29,7 @@ import (
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
-type EIPPlcTag interface {
+type PlcTag interface {
 	apiModel.PlcTag
 	utils.Serializable
 
@@ -44,7 +44,7 @@ type plcTag struct {
 	ElementNb uint16
 }
 
-func NewTag(tag string, _type readWriteModel.CIPDataTypeCode, elementNb uint16) plcTag {
+func NewTag(tag string, _type readWriteModel.CIPDataTypeCode, elementNb uint16) PlcTag {
 	return plcTag{
 		Tag:       tag,
 		Type:      _type,
diff --git a/plc4go/internal/eip/Writer.go b/plc4go/internal/eip/Writer.go
index 7700df8c60..7b198264d6 100644
--- a/plc4go/internal/eip/Writer.go
+++ b/plc4go/internal/eip/Writer.go
@@ -70,7 +70,7 @@ func (m Writer) Write(ctx context.Context, writeRequest apiModel.PlcWriteRequest
 		}()
 		items := make([]readWriteModel.CipService, len(writeRequest.GetTagNames()))
 		for i, tagName := range writeRequest.GetTagNames() {
-			eipTag := writeRequest.GetTag(tagName).(EIPPlcTag)
+			eipTag := writeRequest.GetTag(tagName).(PlcTag)
 			value := writeRequest.GetValue(tagName)
 			tag := eipTag.GetTag()
 			elements := uint16(1)
diff --git a/plc4go/internal/eip/mock_EIPPlcTag_test.go b/plc4go/internal/eip/mock_EIPPlcTag_test.go
index 28a92726fd..449e7f6298 100644
--- a/plc4go/internal/eip/mock_EIPPlcTag_test.go
+++ b/plc4go/internal/eip/mock_EIPPlcTag_test.go
@@ -34,7 +34,7 @@ import (
 	values "github.com/apache/plc4x/plc4go/pkg/api/values"
 )
 
-// MockEIPPlcTag is an autogenerated mock type for the EIPPlcTag type
+// MockEIPPlcTag is an autogenerated mock type for the PlcTag type
 type MockEIPPlcTag struct {
 	mock.Mock
 }
diff --git a/plc4go/internal/modbus/Reader.go b/plc4go/internal/modbus/Reader.go
index 6f37d5ef12..4985f65b26 100644
--- a/plc4go/internal/modbus/Reader.go
+++ b/plc4go/internal/modbus/Reader.go
@@ -72,7 +72,7 @@ func (m *Reader) Read(ctx context.Context, readRequest apiModel.PlcReadRequest)
 		// If we are requesting only one tag, use a
 		tagName := readRequest.GetTagNames()[0]
 		tag := readRequest.GetTag(tagName)
-		modbusTagVar, err := CastToModbusTagFromPlcTag(tag)
+		modbusTagVar, err := castToModbusTagFromPlcTag(tag)
 		if err != nil {
 			result <- spiModel.NewDefaultPlcReadRequestResult(
 				readRequest,
@@ -193,7 +193,7 @@ func (m *Reader) ToPlc4xReadResponse(responseAdu readWriteModel.ModbusTcpADU, re
 	// Get the tag from the request
 	m.log.Trace().Msg("get a tag from request")
 	tagName := readRequest.GetTagNames()[0]
-	tag, err := CastToModbusTagFromPlcTag(readRequest.GetTag(tagName))
+	tag, err := castToModbusTagFromPlcTag(readRequest.GetTag(tagName))
 	if err != nil {
 		return nil, errors.Wrap(err, "error casting to modbus-tag")
 	}
diff --git a/plc4go/internal/modbus/Tag.go b/plc4go/internal/modbus/Tag.go
index eaa027d317..d8ca982038 100644
--- a/plc4go/internal/modbus/Tag.go
+++ b/plc4go/internal/modbus/Tag.go
@@ -48,7 +48,7 @@ type modbusTag struct {
 	Datatype readWriteModel.ModbusDataType
 }
 
-func NewTag(tagType TagType, address uint16, quantity uint16, datatype readWriteModel.ModbusDataType) modbusTag {
+func NewTag(tagType TagType, address uint16, quantity uint16, datatype readWriteModel.ModbusDataType) apiModel.PlcTag {
 	return modbusTag{
 		TagType:  tagType,
 		Address:  address - AddressOffset,
@@ -99,7 +99,7 @@ func (m modbusTag) GetArrayInfo() []apiModel.ArrayInfo {
 	return []apiModel.ArrayInfo{}
 }
 
-func CastToModbusTagFromPlcTag(plcTag apiModel.PlcTag) (modbusTag, error) {
+func castToModbusTagFromPlcTag(plcTag apiModel.PlcTag) (modbusTag, error) {
 	if modbusTagVar, ok := plcTag.(modbusTag); ok {
 		return modbusTagVar, nil
 	}
diff --git a/plc4go/internal/modbus/Writer.go b/plc4go/internal/modbus/Writer.go
index 6c21dbff56..54da7a4fb3 100644
--- a/plc4go/internal/modbus/Writer.go
+++ b/plc4go/internal/modbus/Writer.go
@@ -65,7 +65,7 @@ func (m Writer) Write(ctx context.Context, writeRequest apiModel.PlcWriteRequest
 
 		// Get the modbus tag instance from the request
 		tag := writeRequest.GetTag(tagName)
-		modbusTag, err := CastToModbusTagFromPlcTag(tag)
+		modbusTag, err := castToModbusTagFromPlcTag(tag)
 		if err != nil {
 			result <- spiModel.NewDefaultPlcWriteRequestResult(writeRequest, nil, errors.Wrap(err, "invalid tag item type"))
 			return
diff --git a/plc4go/internal/simulated/Device.go b/plc4go/internal/simulated/Device.go
index 89fcb47ea7..bd4b09a691 100644
--- a/plc4go/internal/simulated/Device.go
+++ b/plc4go/internal/simulated/Device.go
@@ -21,17 +21,17 @@ package simulated
 
 import (
 	"context"
-	"github.com/apache/plc4x/plc4go/spi/options"
 	"github.com/rs/zerolog"
 	"math/rand"
 
-	"github.com/apache/plc4x/plc4go/pkg/api/values"
-	"github.com/apache/plc4x/plc4go/protocols/simulated/readwrite/model"
+	apiValues "github.com/apache/plc4x/plc4go/pkg/api/values"
+	readWriteModel "github.com/apache/plc4x/plc4go/protocols/simulated/readwrite/model"
+	"github.com/apache/plc4x/plc4go/spi/options"
 )
 
 type Device struct {
 	Name  string
-	State map[simulatedTag]*values.PlcValue
+	State map[simulatedTag]*apiValues.PlcValue
 
 	log zerolog.Logger
 }
@@ -39,12 +39,12 @@ type Device struct {
 func NewDevice(name string, _options ...options.WithOption) *Device {
 	return &Device{
 		Name:  name,
-		State: make(map[simulatedTag]*values.PlcValue),
+		State: make(map[simulatedTag]*apiValues.PlcValue),
 		log:   options.ExtractCustomLogger(_options...),
 	}
 }
 
-func (d *Device) Get(tag simulatedTag) *values.PlcValue {
+func (d *Device) Get(tag simulatedTag) *apiValues.PlcValue {
 	switch tag.TagType {
 	case TagState:
 		return d.State[tag]
@@ -54,7 +54,7 @@ func (d *Device) Get(tag simulatedTag) *values.PlcValue {
 	return nil
 }
 
-func (d *Device) Set(tag simulatedTag, value *values.PlcValue) {
+func (d *Device) Set(tag simulatedTag, value *apiValues.PlcValue) {
 	switch tag.TagType {
 	case TagState:
 		d.State[tag] = value
@@ -68,13 +68,14 @@ func (d *Device) Set(tag simulatedTag, value *values.PlcValue) {
 	}
 }
 
-func (d *Device) getRandomValue(tag simulatedTag) *values.PlcValue {
+func (d *Device) getRandomValue(tag simulatedTag) *apiValues.PlcValue {
 	size := tag.GetDataTypeSize().DataTypeSize()
 	data := make([]byte, uint16(size)*tag.Quantity)
 	rand.Read(data)
-	plcValue, err := model.DataItemParse(context.Background(), data, tag.DataTypeSize.String(), tag.Quantity)
+	plcValue, err := readWriteModel.DataItemParse(context.Background(), data, tag.DataTypeSize.String(), tag.Quantity)
 	if err != nil {
-		panic("Unable to parse random bytes")
+		d.log.Err(err).Msg("Unable to parse random bytes")
+		return nil
 	}
 	return &plcValue
 }
diff --git a/plc4go/internal/simulated/Device_test.go b/plc4go/internal/simulated/Device_test.go
index 729a694185..04eb113340 100644
--- a/plc4go/internal/simulated/Device_test.go
+++ b/plc4go/internal/simulated/Device_test.go
@@ -20,6 +20,7 @@
 package simulated
 
 import (
+	"github.com/apache/plc4x/plc4go/spi/options"
 	"github.com/stretchr/testify/assert"
 	"testing"
 
@@ -48,11 +49,11 @@ func TestDevice_Get(t1 *testing.T) {
 			fields: fields{
 				Name: "hurz",
 				State: map[simulatedTag]*apiValues.PlcValue{
-					NewSimulatedTag(TagState, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+					NewSimulatedTag(TagState, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 				},
 			},
 			args: args{
-				field:        NewSimulatedTag(TagState, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1),
+				field:        NewSimulatedTag(TagState, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag),
 				verifyOutput: true,
 			},
 			want: ToReference(spiValues.NewPlcBOOL(true)),
@@ -64,7 +65,7 @@ func TestDevice_Get(t1 *testing.T) {
 				State: map[simulatedTag]*apiValues.PlcValue{},
 			},
 			args: args{
-				field:        NewSimulatedTag(TagRandom, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1),
+				field:        NewSimulatedTag(TagRandom, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag),
 				verifyOutput: false,
 			},
 			want: ToReference(spiValues.NewPlcBOOL(true)),
@@ -76,7 +77,7 @@ func TestDevice_Get(t1 *testing.T) {
 				State: map[simulatedTag]*apiValues.PlcValue{},
 			},
 			args: args{
-				field:        NewSimulatedTag(TagStdOut, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1),
+				field:        NewSimulatedTag(TagStdOut, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag),
 				verifyOutput: false,
 			},
 			want: nil,
@@ -127,7 +128,7 @@ func TestDevice_Random(t *testing.T) {
 				State: map[simulatedTag]*apiValues.PlcValue{},
 			},
 			args: args{
-				field:   NewSimulatedTag(TagRandom, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1),
+				field:   NewSimulatedTag(TagRandom, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag),
 				numRuns: 1000,
 			},
 			want: ToReference(spiValues.NewPlcBOOL(true)),
@@ -181,7 +182,7 @@ func TestDevice_Set(t1 *testing.T) {
 				State: map[simulatedTag]*apiValues.PlcValue{},
 			},
 			args: args{
-				field:         NewSimulatedTag(TagState, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1),
+				field:         NewSimulatedTag(TagState, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag),
 				value:         ToReference(spiValues.NewPlcBOOL(true)),
 				shouldBeSaved: true,
 			},
@@ -193,7 +194,7 @@ func TestDevice_Set(t1 *testing.T) {
 				State: map[simulatedTag]*apiValues.PlcValue{},
 			},
 			args: args{
-				field:         NewSimulatedTag(TagRandom, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1),
+				field:         NewSimulatedTag(TagRandom, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag),
 				value:         ToReference(spiValues.NewPlcBOOL(true)),
 				shouldBeSaved: false,
 			},
@@ -205,7 +206,7 @@ func TestDevice_Set(t1 *testing.T) {
 				State: map[simulatedTag]*apiValues.PlcValue{},
 			},
 			args: args{
-				field:         NewSimulatedTag(TagStdOut, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1),
+				field:         NewSimulatedTag(TagStdOut, "boolTag", readWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag),
 				value:         ToReference(spiValues.NewPlcBOOL(true)),
 				shouldBeSaved: false,
 			},
@@ -248,7 +249,9 @@ func TestDevice_getRandomValue(t1 *testing.T) {
 		args   args
 		want   *apiValues.PlcValue
 	}{
-		// TODO: Add test cases.
+		{
+			name: "get it",
+		},
 	}
 	for _, tt := range tests {
 		t1.Run(tt.name, func(t1 *testing.T) {
@@ -272,7 +275,14 @@ func TestNewDevice(t *testing.T) {
 		args args
 		want *Device
 	}{
-		// TODO: Add test cases.
+		{
+			name: "create it",
+			want: &Device{
+				Name:  "",
+				State: make(map[simulatedTag]*apiValues.PlcValue),
+				log:   options.ExtractCustomLogger(),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
diff --git a/plc4go/internal/simulated/Reader_test.go b/plc4go/internal/simulated/Reader_test.go
index 8bf5b1b9b7..f34eac9696 100644
--- a/plc4go/internal/simulated/Reader_test.go
+++ b/plc4go/internal/simulated/Reader_test.go
@@ -59,7 +59,7 @@ func TestReader_Read(t *testing.T) {
 				device: &Device{
 					Name: "hurz",
 					State: map[simulatedTag]*apiValues.PlcValue{
-						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 					},
 				},
 				options: map[string][]string{},
@@ -85,7 +85,7 @@ func TestReader_Read(t *testing.T) {
 				device: &Device{
 					Name: "hurz",
 					State: map[simulatedTag]*apiValues.PlcValue{
-						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 					},
 				},
 				options: map[string][]string{
@@ -113,7 +113,7 @@ func TestReader_Read(t *testing.T) {
 				device: &Device{
 					Name: "hurz",
 					State: map[simulatedTag]*apiValues.PlcValue{
-						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 					},
 				},
 				options: map[string][]string{},
@@ -140,7 +140,7 @@ func TestReader_Read(t *testing.T) {
 				device: &Device{
 					Name: "hurz",
 					State: map[simulatedTag]*apiValues.PlcValue{
-						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 					},
 				},
 				options: map[string][]string{},
diff --git a/plc4go/internal/simulated/Tag.go b/plc4go/internal/simulated/Tag.go
index a9fca79db0..6c6d8e73b1 100644
--- a/plc4go/internal/simulated/Tag.go
+++ b/plc4go/internal/simulated/Tag.go
@@ -31,9 +31,9 @@ import (
 type Tag interface {
 	apiModel.PlcTag
 
-	GetTagType() *TagType
+	GetTagType() TagType
 	GetName() string
-	GetDataTypeSize() *model.SimulatedDataTypeSizes
+	GetDataTypeSize() model.SimulatedDataTypeSizes
 }
 
 type simulatedTag struct {
@@ -43,7 +43,7 @@ type simulatedTag struct {
 	Quantity     uint16
 }
 
-func NewSimulatedTag(tagType TagType, name string, dataTypeSize model.SimulatedDataTypeSizes, quantity uint16) simulatedTag {
+func NewSimulatedTag(tagType TagType, name string, dataTypeSize model.SimulatedDataTypeSizes, quantity uint16) Tag {
 	return simulatedTag{
 		TagType:      tagType,
 		Name:         name,
diff --git a/plc4go/internal/simulated/Tag_test.go b/plc4go/internal/simulated/Tag_test.go
index 04616ef6ed..f7a3770c68 100644
--- a/plc4go/internal/simulated/Tag_test.go
+++ b/plc4go/internal/simulated/Tag_test.go
@@ -36,7 +36,7 @@ func TestNewSimulatedField(t *testing.T) {
 	tests := []struct {
 		name string
 		args args
-		want simulatedTag
+		want Tag
 	}{
 		{
 			name: "simple",
diff --git a/plc4go/internal/simulated/Writer_test.go b/plc4go/internal/simulated/Writer_test.go
index 4f6adea84b..58eb9d9919 100644
--- a/plc4go/internal/simulated/Writer_test.go
+++ b/plc4go/internal/simulated/Writer_test.go
@@ -78,7 +78,7 @@ func TestWriter_Write(t *testing.T) {
 					"test": apiModel.PlcResponseCode_OK,
 				}),
 			newState: map[simulatedTag]*apiValues.PlcValue{
-				NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+				NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 			},
 			delayAtLeast: 0,
 		},
@@ -88,7 +88,7 @@ func TestWriter_Write(t *testing.T) {
 				device: &Device{
 					Name: "hurz",
 					State: map[simulatedTag]*apiValues.PlcValue{
-						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 					},
 				},
 				options: map[string][]string{},
@@ -107,7 +107,7 @@ func TestWriter_Write(t *testing.T) {
 					"test": apiModel.PlcResponseCode_OK,
 				}),
 			newState: map[simulatedTag]*apiValues.PlcValue{
-				NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(false)),
+				NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(false)),
 			},
 			delayAtLeast: 0,
 		},
@@ -117,7 +117,7 @@ func TestWriter_Write(t *testing.T) {
 				device: &Device{
 					Name: "hurz",
 					State: map[simulatedTag]*apiValues.PlcValue{
-						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 					},
 				},
 				options: map[string][]string{
@@ -138,7 +138,7 @@ func TestWriter_Write(t *testing.T) {
 					"test": apiModel.PlcResponseCode_OK,
 				}),
 			newState: map[simulatedTag]*apiValues.PlcValue{
-				NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(false)),
+				NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(false)),
 			},
 			delayAtLeast: 1000,
 		},
@@ -149,7 +149,7 @@ func TestWriter_Write(t *testing.T) {
 				device: &Device{
 					Name: "hurz",
 					State: map[simulatedTag]*apiValues.PlcValue{
-						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+						NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 					},
 				},
 				options: map[string][]string{},
@@ -168,7 +168,7 @@ func TestWriter_Write(t *testing.T) {
 					"test": apiModel.PlcResponseCode_INVALID_ADDRESS,
 				}),
 			newState: map[simulatedTag]*apiValues.PlcValue{
-				NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1): ToReference(spiValues.NewPlcBOOL(true)),
+				NewSimulatedTag(TagState, "test", simulatedReadWriteModel.SimulatedDataTypeSizes_BOOL, 1).(simulatedTag): ToReference(spiValues.NewPlcBOOL(true)),
 			},
 			delayAtLeast: 0,
 		},
diff --git a/plc4go/pkg/api/cache/connectionContainer_test.go b/plc4go/pkg/api/cache/connectionContainer_test.go
index 44bb7f2295..863454eeae 100644
--- a/plc4go/pkg/api/cache/connectionContainer_test.go
+++ b/plc4go/pkg/api/cache/connectionContainer_test.go
@@ -105,7 +105,12 @@ func Test_connectionContainer_addListener(t1 *testing.T) {
 		fields fields
 		args   args
 	}{
-		// TODO: Add test cases.
+		{
+			name: "add it",
+			fields: fields{
+				lock: lock.NewCASMutex(),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t1.Run(tt.name, func(t1 *testing.T) {
diff --git a/plc4go/pkg/api/model/plc_response_code.go b/plc4go/pkg/api/model/plc_response_code.go
index 989a0355ff..ee0fb53cb0 100644
--- a/plc4go/pkg/api/model/plc_response_code.go
+++ b/plc4go/pkg/api/model/plc_response_code.go
@@ -85,6 +85,6 @@ func (m PlcResponseCode) Serialize() ([]byte, error) {
 	return wb.GetBytes(), nil
 }
 
-func (m PlcResponseCode) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+func (m PlcResponseCode) SerializeWithWriteBuffer(_ context.Context, writeBuffer utils.WriteBuffer) error {
 	return writeBuffer.WriteUint8("ResponseCode", 8, uint8(m), utils.WithAdditionalStringRepresentation(m.GetName()))
 }
diff --git a/plc4go/pkg/api/model/plc_response_code_test.go b/plc4go/pkg/api/model/plc_response_code_test.go
index 554d178bdc..927cc14c0a 100644
--- a/plc4go/pkg/api/model/plc_response_code_test.go
+++ b/plc4go/pkg/api/model/plc_response_code_test.go
@@ -92,7 +92,12 @@ func TestPlcResponseCode_SerializeWithWriteBuffer(t *testing.T) {
 		args    args
 		wantErr bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "serialize it",
+			args: args{
+				writeBuffer: utils.NewWriteBufferByteBased(),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
diff --git a/plc4go/spi/default/testTransportInstance_test.go b/plc4go/spi/default/testTransportInstance_test.go
deleted file mode 100644
index 5b1c7e107b..0000000000
--- a/plc4go/spi/default/testTransportInstance_test.go
+++ /dev/null
@@ -1,83 +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 _default
-
-import (
-	"bufio"
-	"context"
-)
-
-// TODO: replace with proper mock
-type testTransportInstance struct {
-	connected          bool
-	connectWithContext func(ctx context.Context) error
-}
-
-func (t testTransportInstance) String() string {
-	// NO-OP
-	return ""
-}
-
-func (t testTransportInstance) Connect() error {
-	// NO-OP
-	return nil
-}
-
-func (t testTransportInstance) ConnectWithContext(ctx context.Context) error {
-	if t.connectWithContext != nil {
-		return t.connectWithContext(ctx)
-	}
-	// NO-OP
-	return nil
-}
-
-func (t testTransportInstance) Close() error {
-	// NO-OP
-	return nil
-}
-
-func (t testTransportInstance) IsConnected() bool {
-	return t.connected
-}
-
-func (t testTransportInstance) FillBuffer(until func(pos uint, currentByte byte, reader *bufio.Reader) bool) error {
-	// NO-OP
-	return nil
-}
-
-func (t testTransportInstance) GetNumBytesAvailableInBuffer() (uint32, error) {
-	// NO-OP
-	return 0, nil
-}
-
-func (t testTransportInstance) PeekReadableBytes(numBytes uint32) ([]byte, error) {
-	// NO-OP
-	return nil, nil
-}
-
-func (t testTransportInstance) Read(numBytes uint32) ([]byte, error) {
-	// NO-OP
-	return nil, nil
-}
-
-func (t testTransportInstance) Write(data []byte) error {
-	// NO-OP
-	return nil
-}
diff --git a/plc4go/spi/model/DefaultPlcTagRequest_test.go b/plc4go/spi/model/DefaultPlcTagRequest_test.go
index 6ac7c6daaf..2be7b86372 100644
--- a/plc4go/spi/model/DefaultPlcTagRequest_test.go
+++ b/plc4go/spi/model/DefaultPlcTagRequest_test.go
@@ -77,7 +77,9 @@ func TestDefaultPlcTagRequest_GetTagNames(t *testing.T) {
 		fields fields
 		want   []string
 	}{
-		// TODO: Add test cases.
+		{
+			name: "get em",
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -100,7 +102,10 @@ func TestDefaultPlcTagRequest_IsAPlcMessage(t *testing.T) {
 		fields fields
 		want   bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "it is",
+			want: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -123,7 +128,13 @@ func TestNewDefaultPlcTagRequest(t *testing.T) {
 		args args
 		want *DefaultPlcTagRequest
 	}{
-		// TODO: Add test cases.
+		{
+			name: "create it",
+			want: &DefaultPlcTagRequest{
+				tags:     func() map[string]apiModel.PlcTag { return nil }(),
+				tagNames: func() []string { return nil }(),
+			},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
diff --git a/plc4go/spi/tracer/Tracer.go b/plc4go/spi/tracer/Tracer.go
index 9a78bc7360..9d09de03cf 100644
--- a/plc4go/spi/tracer/Tracer.go
+++ b/plc4go/spi/tracer/Tracer.go
@@ -37,7 +37,7 @@ type TraceEntry struct {
 	Message       string
 }
 
-type TracerProvider interface {
+type Provider interface {
 	EnableTracer()
 	GetTracer() *Tracer
 }
diff --git a/plc4go/spi/tracer/mock_Provider_test.go b/plc4go/spi/tracer/mock_Provider_test.go
new file mode 100644
index 0000000000..fb1127f7e0
--- /dev/null
+++ b/plc4go/spi/tracer/mock_Provider_test.go
@@ -0,0 +1,127 @@
+/*
+ * 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.
+ */
+
+// Code generated by mockery v2.28.2. DO NOT EDIT.
+
+package tracer
+
+import mock "github.com/stretchr/testify/mock"
+
+// MockProvider is an autogenerated mock type for the Provider type
+type MockProvider struct {
+	mock.Mock
+}
+
+type MockProvider_Expecter struct {
+	mock *mock.Mock
+}
+
+func (_m *MockProvider) EXPECT() *MockProvider_Expecter {
+	return &MockProvider_Expecter{mock: &_m.Mock}
+}
+
+// EnableTracer provides a mock function with given fields:
+func (_m *MockProvider) EnableTracer() {
+	_m.Called()
+}
+
+// MockProvider_EnableTracer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'EnableTracer'
+type MockProvider_EnableTracer_Call struct {
+	*mock.Call
+}
+
+// EnableTracer is a helper method to define mock.On call
+func (_e *MockProvider_Expecter) EnableTracer() *MockProvider_EnableTracer_Call {
+	return &MockProvider_EnableTracer_Call{Call: _e.mock.On("EnableTracer")}
+}
+
+func (_c *MockProvider_EnableTracer_Call) Run(run func()) *MockProvider_EnableTracer_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run()
+	})
+	return _c
+}
+
+func (_c *MockProvider_EnableTracer_Call) Return() *MockProvider_EnableTracer_Call {
+	_c.Call.Return()
+	return _c
+}
+
+func (_c *MockProvider_EnableTracer_Call) RunAndReturn(run func()) *MockProvider_EnableTracer_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+// GetTracer provides a mock function with given fields:
+func (_m *MockProvider) GetTracer() *Tracer {
+	ret := _m.Called()
+
+	var r0 *Tracer
+	if rf, ok := ret.Get(0).(func() *Tracer); ok {
+		r0 = rf()
+	} else {
+		if ret.Get(0) != nil {
+			r0 = ret.Get(0).(*Tracer)
+		}
+	}
+
+	return r0
+}
+
+// MockProvider_GetTracer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTracer'
+type MockProvider_GetTracer_Call struct {
+	*mock.Call
+}
+
+// GetTracer is a helper method to define mock.On call
+func (_e *MockProvider_Expecter) GetTracer() *MockProvider_GetTracer_Call {
+	return &MockProvider_GetTracer_Call{Call: _e.mock.On("GetTracer")}
+}
+
+func (_c *MockProvider_GetTracer_Call) Run(run func()) *MockProvider_GetTracer_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run()
+	})
+	return _c
+}
+
+func (_c *MockProvider_GetTracer_Call) Return(_a0 *Tracer) *MockProvider_GetTracer_Call {
+	_c.Call.Return(_a0)
+	return _c
+}
+
+func (_c *MockProvider_GetTracer_Call) RunAndReturn(run func() *Tracer) *MockProvider_GetTracer_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+type mockConstructorTestingTNewMockProvider interface {
+	mock.TestingT
+	Cleanup(func())
+}
+
+// NewMockProvider creates a new instance of MockProvider. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+func NewMockProvider(t mockConstructorTestingTNewMockProvider) *MockProvider {
+	mock := &MockProvider{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
diff --git a/plc4go/spi/tracer/mock_TracerProvider_test.go b/plc4go/spi/tracer/mock_TracerProvider_test.go
deleted file mode 100644
index d93aff0bde..0000000000
--- a/plc4go/spi/tracer/mock_TracerProvider_test.go
+++ /dev/null
@@ -1,127 +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.
- */
-
-// Code generated by mockery v2.28.2. DO NOT EDIT.
-
-package tracer
-
-import mock "github.com/stretchr/testify/mock"
-
-// MockTracerProvider is an autogenerated mock type for the TracerProvider type
-type MockTracerProvider struct {
-	mock.Mock
-}
-
-type MockTracerProvider_Expecter struct {
-	mock *mock.Mock
-}
-
-func (_m *MockTracerProvider) EXPECT() *MockTracerProvider_Expecter {
-	return &MockTracerProvider_Expecter{mock: &_m.Mock}
-}
-
-// EnableTracer provides a mock function with given fields:
-func (_m *MockTracerProvider) EnableTracer() {
-	_m.Called()
-}
-
-// MockTracerProvider_EnableTracer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'EnableTracer'
-type MockTracerProvider_EnableTracer_Call struct {
-	*mock.Call
-}
-
-// EnableTracer is a helper method to define mock.On call
-func (_e *MockTracerProvider_Expecter) EnableTracer() *MockTracerProvider_EnableTracer_Call {
-	return &MockTracerProvider_EnableTracer_Call{Call: _e.mock.On("EnableTracer")}
-}
-
-func (_c *MockTracerProvider_EnableTracer_Call) Run(run func()) *MockTracerProvider_EnableTracer_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run()
-	})
-	return _c
-}
-
-func (_c *MockTracerProvider_EnableTracer_Call) Return() *MockTracerProvider_EnableTracer_Call {
-	_c.Call.Return()
-	return _c
-}
-
-func (_c *MockTracerProvider_EnableTracer_Call) RunAndReturn(run func()) *MockTracerProvider_EnableTracer_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-// GetTracer provides a mock function with given fields:
-func (_m *MockTracerProvider) GetTracer() *Tracer {
-	ret := _m.Called()
-
-	var r0 *Tracer
-	if rf, ok := ret.Get(0).(func() *Tracer); ok {
-		r0 = rf()
-	} else {
-		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(*Tracer)
-		}
-	}
-
-	return r0
-}
-
-// MockTracerProvider_GetTracer_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTracer'
-type MockTracerProvider_GetTracer_Call struct {
-	*mock.Call
-}
-
-// GetTracer is a helper method to define mock.On call
-func (_e *MockTracerProvider_Expecter) GetTracer() *MockTracerProvider_GetTracer_Call {
-	return &MockTracerProvider_GetTracer_Call{Call: _e.mock.On("GetTracer")}
-}
-
-func (_c *MockTracerProvider_GetTracer_Call) Run(run func()) *MockTracerProvider_GetTracer_Call {
-	_c.Call.Run(func(args mock.Arguments) {
-		run()
-	})
-	return _c
-}
-
-func (_c *MockTracerProvider_GetTracer_Call) Return(_a0 *Tracer) *MockTracerProvider_GetTracer_Call {
-	_c.Call.Return(_a0)
-	return _c
-}
-
-func (_c *MockTracerProvider_GetTracer_Call) RunAndReturn(run func() *Tracer) *MockTracerProvider_GetTracer_Call {
-	_c.Call.Return(run)
-	return _c
-}
-
-type mockConstructorTestingTNewMockTracerProvider interface {
-	mock.TestingT
-	Cleanup(func())
-}
-
-// NewMockTracerProvider creates a new instance of MockTracerProvider. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
-func NewMockTracerProvider(t mockConstructorTestingTNewMockTracerProvider) *MockTracerProvider {
-	mock := &MockTracerProvider{}
-	mock.Mock.Test(t)
-
-	t.Cleanup(func() { mock.AssertExpectations(t) })
-
-	return mock
-}
diff --git a/plc4go/spi/utils/ReadBufferJsonBased_test.go b/plc4go/spi/utils/ReadBufferJsonBased_test.go
index ce06d02a54..9f7aa825c3 100644
--- a/plc4go/spi/utils/ReadBufferJsonBased_test.go
+++ b/plc4go/spi/utils/ReadBufferJsonBased_test.go
@@ -189,7 +189,10 @@ func Test_jsonReadBuffer_HasMore(t *testing.T) {
 		args   args
 		want   bool
 	}{
-		// TODO: Add test cases.
+		{
+			name: "has it",
+			want: true,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
diff --git a/plc4go/tools/plc4xgenerator/gen.go b/plc4go/tools/plc4xgenerator/gen.go
index 0591b0d2b9..cd2dbfc2d5 100644
--- a/plc4go/tools/plc4xgenerator/gen.go
+++ b/plc4go/tools/plc4xgenerator/gen.go
@@ -27,7 +27,6 @@ import (
 	"go/format"
 	"go/token"
 	"go/types"
-	"io/ioutil"
 	"log"
 	"os"
 	"path/filepath"
@@ -115,7 +114,7 @@ func main() {
 		baseName := fmt.Sprintf("%s_plc4xgen.go", typeList[0])
 		outputName = filepath.Join(dir, baseName)
 	}
-	err := ioutil.WriteFile(outputName, src, 0644)
+	err := os.WriteFile(outputName, src, 0644)
 	if err != nil {
 		log.Fatalf("writing output: %s", err)
 	}