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/05/22 11:03:21 UTC
[plc4x] branch develop updated: test(plc4go/cbus): add test for Buffer
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
The following commit(s) were added to refs/heads/develop by this push:
new 3a87a93d48 test(plc4go/cbus): add test for Buffer
3a87a93d48 is described below
commit 3a87a93d48ba0334ad883a9d297d566a3cc86727
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon May 22 13:03:12 2023 +0200
test(plc4go/cbus): add test for Buffer
---
plc4go/spi/utils/Buffer.go | 20 ++--
plc4go/spi/utils/Buffer_test.go | 187 +++++++++++++++++++++++++++++++++
plc4go/spi/utils/bufferCommons.go | 26 ++++-
plc4go/spi/utils/bufferCommons_test.go | 7 +-
4 files changed, 227 insertions(+), 13 deletions(-)
diff --git a/plc4go/spi/utils/Buffer.go b/plc4go/spi/utils/Buffer.go
index fb18c64122..543891e2d3 100644
--- a/plc4go/spi/utils/Buffer.go
+++ b/plc4go/spi/utils/Buffer.go
@@ -27,12 +27,12 @@ type WithReaderWriterArgs interface {
// WithAdditionalStringRepresentation can be used by e.g. enums to supply an additional string representation
func WithAdditionalStringRepresentation(stringRepresentation string) WithReaderWriterArgs {
- return withAdditionalStringRepresentation{stringRepresentation: stringRepresentation}
+ return withAdditionalStringRepresentation{readerWriterArg: readerWriterArg{WithReaderArgs: readerArg{}, WithWriterArgs: writerArg{}}, stringRepresentation: stringRepresentation}
}
// WithRenderAsList indicates that an element can be rendered as list
func WithRenderAsList(renderAsList bool) WithReaderWriterArgs {
- return withRenderAsList{renderAsList: renderAsList}
+ return withRenderAsList{readerWriterArg: readerWriterArg{WithReaderArgs: readerArg{}, WithWriterArgs: writerArg{}}, renderAsList: renderAsList}
}
///////////////////////////////////////
@@ -42,8 +42,16 @@ func WithRenderAsList(renderAsList bool) WithReaderWriterArgs {
//
type readerWriterArg struct {
- readerArg
- writerArg
+ WithReaderArgs
+ WithWriterArgs
+}
+
+func (r readerWriterArg) isReaderArgs() bool {
+ return r.WithReaderArgs != nil
+}
+
+func (r readerWriterArg) isWriterArgs() bool {
+ return r.WithWriterArgs != nil
}
type withAdditionalStringRepresentation struct {
@@ -65,7 +73,7 @@ type withRenderAsList struct {
func UpcastReaderArgs(args ...WithReaderArgs) []WithReaderWriterArgs {
result := make([]WithReaderWriterArgs, len(args))
for i, arg := range args {
- result[i] = arg.(WithReaderWriterArgs)
+ result[i] = readerWriterArg{arg, writerArg{}}
}
return result
}
@@ -73,7 +81,7 @@ func UpcastReaderArgs(args ...WithReaderArgs) []WithReaderWriterArgs {
func UpcastWriterArgs(args ...WithWriterArgs) []WithReaderWriterArgs {
result := make([]WithReaderWriterArgs, len(args))
for i, arg := range args {
- result[i] = arg.(WithReaderWriterArgs)
+ result[i] = readerWriterArg{readerArg{}, arg}
}
return result
}
diff --git a/plc4go/spi/utils/Buffer_test.go b/plc4go/spi/utils/Buffer_test.go
new file mode 100644
index 0000000000..999b6de4a1
--- /dev/null
+++ b/plc4go/spi/utils/Buffer_test.go
@@ -0,0 +1,187 @@
+/*
+ * 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 utils
+
+import (
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+func TestUpcastReaderArgs(t *testing.T) {
+ type args struct {
+ args []WithReaderArgs
+ }
+ tests := []struct {
+ name string
+ args args
+ want []WithReaderWriterArgs
+ }{
+ {
+ name: "nothing results in nothing",
+ want: []WithReaderWriterArgs{},
+ },
+ {
+ name: "only a reader arg",
+ args: args{
+ []WithReaderArgs{readerArg{}},
+ },
+ want: []WithReaderWriterArgs{readerWriterArg{readerArg{}, writerArg{}}},
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want, UpcastReaderArgs(tt.args.args...), "UpcastReaderArgs(%v)", tt.args.args)
+ })
+ }
+}
+
+func TestUpcastWriterArgs(t *testing.T) {
+ type args struct {
+ args []WithWriterArgs
+ }
+ tests := []struct {
+ name string
+ args args
+ want []WithReaderWriterArgs
+ }{
+ {
+ name: "nothing results in nothing",
+ want: []WithReaderWriterArgs{},
+ },
+ {
+ name: "only a reader arg",
+ args: args{
+ []WithWriterArgs{writerArg{}},
+ },
+ want: []WithReaderWriterArgs{readerWriterArg{readerArg{}, writerArg{}}},
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want, UpcastWriterArgs(tt.args.args...), "UpcastWriterArgs(%v)", tt.args.args)
+ })
+ }
+}
+
+func TestWithAdditionalStringRepresentation(t *testing.T) {
+ type args struct {
+ stringRepresentation string
+ }
+ tests := []struct {
+ name string
+ args args
+ want WithReaderWriterArgs
+ }{
+ {
+ name: "some string representation",
+ want: withAdditionalStringRepresentation{readerWriterArg: readerWriterArg{readerArg{}, writerArg{}}, stringRepresentation: ""},
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want, WithAdditionalStringRepresentation(tt.args.stringRepresentation), "WithAdditionalStringRepresentation(%v)", tt.args.stringRepresentation)
+ })
+ }
+}
+
+func TestWithRenderAsList(t *testing.T) {
+ type args struct {
+ renderAsList bool
+ }
+ tests := []struct {
+ name string
+ args args
+ want WithReaderWriterArgs
+ }{
+ {
+ name: "render as list",
+ args: args{renderAsList: true},
+ want: withRenderAsList{readerWriterArg: readerWriterArg{readerArg{}, writerArg{}}, renderAsList: true},
+ },
+ {
+ name: "render not as list",
+ args: args{renderAsList: false},
+ want: withRenderAsList{readerWriterArg: readerWriterArg{readerArg{}, writerArg{}}, renderAsList: false},
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want, WithRenderAsList(tt.args.renderAsList), "WithRenderAsList(%v)", tt.args.renderAsList)
+ })
+ }
+}
+
+func Test_readerWriterArg_isReaderArgs(t *testing.T) {
+ type fields struct {
+ readerArg WithReaderArgs
+ writerArg WithWriterArgs
+ }
+ tests := []struct {
+ name string
+ fields fields
+ want bool
+ }{
+ {
+ name: "it is",
+ fields: fields{
+ readerArg: readerArg{},
+ },
+ want: true,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ re := readerWriterArg{
+ WithReaderArgs: tt.fields.readerArg,
+ WithWriterArgs: tt.fields.writerArg,
+ }
+ assert.Equalf(t, tt.want, re.isReaderArgs(), "isReaderArgs()")
+ })
+ }
+}
+
+func Test_readerWriterArg_isWriterArgs(t *testing.T) {
+ type fields struct {
+ readerArg WithReaderArgs
+ writerArg WithWriterArgs
+ }
+ tests := []struct {
+ name string
+ fields fields
+ want bool
+ }{
+ {
+ name: "it is",
+ fields: fields{
+ writerArg: writerArg{},
+ },
+ want: true,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ re := readerWriterArg{
+ WithReaderArgs: tt.fields.readerArg,
+ WithWriterArgs: tt.fields.writerArg,
+ }
+ assert.Equalf(t, tt.want, re.isWriterArgs(), "isWriterArgs()")
+ })
+ }
+}
diff --git a/plc4go/spi/utils/bufferCommons.go b/plc4go/spi/utils/bufferCommons.go
index 7f39d90b3d..f591cdf7ab 100644
--- a/plc4go/spi/utils/bufferCommons.go
+++ b/plc4go/spi/utils/bufferCommons.go
@@ -50,9 +50,18 @@ func (b BufferCommons) IsToBeRenderedAsList(readerWriterArgs ...WithReaderWriter
if !arg.isWriterArgs() && !arg.isReaderArgs() {
panic("not a reader or writer arg")
}
- switch arg.(type) {
+ switch rwArg := arg.(type) {
case withRenderAsList:
- return arg.(withRenderAsList).renderAsList
+ return rwArg.renderAsList
+ case readerWriterArg:
+ switch rArg := rwArg.WithReaderArgs.(type) {
+ case withRenderAsList:
+ return rArg.renderAsList
+ }
+ switch wArg := rwArg.WithWriterArgs.(type) {
+ case withRenderAsList:
+ return wArg.renderAsList
+ }
}
}
return false
@@ -63,9 +72,18 @@ func (b BufferCommons) ExtractAdditionalStringRepresentation(readerWriterArgs ..
if !arg.isWriterArgs() && !arg.isReaderArgs() {
panic("not a reader or writer arg")
}
- switch arg.(type) {
+ switch rwArg := arg.(type) {
case withAdditionalStringRepresentation:
- return arg.(withAdditionalStringRepresentation).stringRepresentation
+ return rwArg.stringRepresentation
+ case readerWriterArg:
+ switch rArg := rwArg.WithReaderArgs.(type) {
+ case withAdditionalStringRepresentation:
+ return rArg.stringRepresentation
+ }
+ switch wArg := rwArg.WithWriterArgs.(type) {
+ case withAdditionalStringRepresentation:
+ return wArg.stringRepresentation
+ }
}
}
return ""
diff --git a/plc4go/spi/utils/bufferCommons_test.go b/plc4go/spi/utils/bufferCommons_test.go
index f319d1c812..70c9124913 100644
--- a/plc4go/spi/utils/bufferCommons_test.go
+++ b/plc4go/spi/utils/bufferCommons_test.go
@@ -41,9 +41,10 @@ func TestBufferCommons_ExtractAdditionalStringRepresentation(t *testing.T) {
name: "extract the argument",
args: args{
readerWriterArgs: []WithReaderWriterArgs{
- withAdditionalStringRepresentation{},
+ withAdditionalStringRepresentation{readerWriterArg: readerWriterArg{readerArg{}, writerArg{}}, stringRepresentation: "plc4xftw"},
},
},
+ want: "plc4xftw",
},
}
for _, tt := range tests {
@@ -70,7 +71,7 @@ func TestBufferCommons_IsToBeRenderedAsList(t *testing.T) {
name: "it is not",
args: args{
readerWriterArgs: []WithReaderWriterArgs{
- withRenderAsList{},
+ withRenderAsList{readerWriterArg: readerWriterArg{readerArg{}, writerArg{}}},
},
},
},
@@ -78,7 +79,7 @@ func TestBufferCommons_IsToBeRenderedAsList(t *testing.T) {
name: "it is",
args: args{
readerWriterArgs: []WithReaderWriterArgs{
- withRenderAsList{renderAsList: true},
+ withRenderAsList{readerWriterArg: readerWriterArg{readerArg{}, writerArg{}}, renderAsList: true},
},
},
want: true,