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 6ffc898e44 test(plc4go/cbus): add tests for TagHandler
6ffc898e44 is described below
commit 6ffc898e4453ed6406d1e8c7da3a1aabb646e608
Author: Sebastian Rühl <[email protected]>
AuthorDate: Tue Apr 4 13:01:20 2023 +0200
test(plc4go/cbus): add tests for TagHandler
---
plc4go/internal/cbus/TagHandler.go | 3 +
plc4go/internal/cbus/TagHandler_test.go | 142 ++++++++++++++++++++++++--------
2 files changed, 109 insertions(+), 36 deletions(-)
diff --git a/plc4go/internal/cbus/TagHandler.go
b/plc4go/internal/cbus/TagHandler.go
index 14762246d7..272960c3ec 100644
--- a/plc4go/internal/cbus/TagHandler.go
+++ b/plc4go/internal/cbus/TagHandler.go
@@ -531,6 +531,9 @@ func (m TagHandler) extractBridges(match map[string]string)
([]readWriteModel.Br
}
}
}
+ if len(bridgeAddresses) > 6 {
+ return nil, errors.Errorf("Can only contain up to 6 bridges.
Actual length: %d", len(bridgeAddresses))
+ }
return bridgeAddresses, nil
}
diff --git a/plc4go/internal/cbus/TagHandler_test.go
b/plc4go/internal/cbus/TagHandler_test.go
index f1392c11a0..fd3690c33c 100644
--- a/plc4go/internal/cbus/TagHandler_test.go
+++ b/plc4go/internal/cbus/TagHandler_test.go
@@ -302,36 +302,48 @@ func TestTagHandler_ParseQuery(t *testing.T) {
}
func TestTagHandler_applicationIdFromArgument(t *testing.T) {
- type fields struct {
- statusRequestPattern *regexp.Regexp
- calPattern *regexp.Regexp
- salPattern *regexp.Regexp
- salMonitorPattern *regexp.Regexp
- mmiMonitorPattern *regexp.Regexp
- unityQuery *regexp.Regexp
- }
type args struct {
applicationIdArgument string
}
tests := []struct {
name string
- fields fields
args args
want readWriteModel.ApplicationIdContainer
wantErr assert.ErrorAssertionFunc
}{
- // TODO: Add test cases.
+ {
+ name: "empty",
+ args: args{applicationIdArgument: ""},
+ wantErr: assert.Error,
+ },
+ {
+ name: "number",
+ args: args{applicationIdArgument: "56"},
+ want:
readWriteModel.ApplicationIdContainer_LIGHTING_38,
+ wantErr: assert.NoError,
+ },
+ {
+ name: "hex",
+ args: args{applicationIdArgument: "0x38"},
+ want:
readWriteModel.ApplicationIdContainer_LIGHTING_38,
+ wantErr: assert.NoError,
+ },
+ {
+ name: "by name",
+ args: args{applicationIdArgument: "LIGHTING"},
+ want:
readWriteModel.ApplicationIdContainer_LIGHTING_38,
+ wantErr: assert.NoError,
+ },
+ {
+ name: "by exact name",
+ args: args{applicationIdArgument: "LIGHTING_39"},
+ want:
readWriteModel.ApplicationIdContainer_LIGHTING_39,
+ wantErr: assert.NoError,
+ },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- m := TagHandler{
- statusRequestPattern:
tt.fields.statusRequestPattern,
- calPattern: tt.fields.calPattern,
- salPattern: tt.fields.salPattern,
- salMonitorPattern:
tt.fields.salMonitorPattern,
- mmiMonitorPattern:
tt.fields.mmiMonitorPattern,
- unityQuery: tt.fields.unityQuery,
- }
+ m := NewTagHandler()
got, err :=
m.applicationIdFromArgument(tt.args.applicationIdArgument)
if !tt.wantErr(t, err,
fmt.Sprintf("applicationIdFromArgument(%v)", tt.args.applicationIdArgument)) {
return
@@ -342,36 +354,94 @@ func TestTagHandler_applicationIdFromArgument(t
*testing.T) {
}
func TestTagHandler_extractBridges(t *testing.T) {
- type fields struct {
- statusRequestPattern *regexp.Regexp
- calPattern *regexp.Regexp
- salPattern *regexp.Regexp
- salMonitorPattern *regexp.Regexp
- mmiMonitorPattern *regexp.Regexp
- unityQuery *regexp.Regexp
- }
type args struct {
match map[string]string
}
tests := []struct {
name string
- fields fields
args args
want []readWriteModel.BridgeAddress
wantErr assert.ErrorAssertionFunc
}{
- // TODO: Add test cases.
+ {
+ name: "no matches",
+ args: args{match: map[string]string{}},
+ wantErr: assert.NoError,
+ },
+ {
+ name: "empty bridges",
+ args: args{match: map[string]string{
+ "bridges": "",
+ }},
+ wantErr: assert.NoError,
+ },
+ {
+ name: "one bridge",
+ args: args{match: map[string]string{
+ "bridges": "3",
+ }},
+ want:
[]readWriteModel.BridgeAddress{readWriteModel.NewBridgeAddress(3)},
+ wantErr: assert.NoError,
+ },
+ {
+ name: "one bridge prefixed",
+ args: args{match: map[string]string{
+ "bridges": "b3",
+ }},
+ want:
[]readWriteModel.BridgeAddress{readWriteModel.NewBridgeAddress(3)},
+ wantErr: assert.NoError,
+ },
+ {
+ name: "one hex bridge",
+ args: args{match: map[string]string{
+ "bridges": "0x03",
+ }},
+ want:
[]readWriteModel.BridgeAddress{readWriteModel.NewBridgeAddress(3)},
+ wantErr: assert.NoError,
+ },
+ {
+ name: "two bridges",
+ args: args{match: map[string]string{
+ "bridges": "3-4",
+ }},
+ want:
[]readWriteModel.BridgeAddress{readWriteModel.NewBridgeAddress(3),
readWriteModel.NewBridgeAddress(4)},
+ wantErr: assert.NoError,
+ },
+ {
+ name: "two bridges prefixed",
+ args: args{match: map[string]string{
+ "bridges": "b3-b4",
+ }},
+ want:
[]readWriteModel.BridgeAddress{readWriteModel.NewBridgeAddress(3),
readWriteModel.NewBridgeAddress(4)},
+ wantErr: assert.NoError,
+ },
+ {
+ name: "two hex bridges prefixed",
+ args: args{match: map[string]string{
+ "bridges": "b0x03-b0x04",
+ }},
+ want:
[]readWriteModel.BridgeAddress{readWriteModel.NewBridgeAddress(3),
readWriteModel.NewBridgeAddress(4)},
+ wantErr: assert.NoError,
+ },
+ {
+ name: "six hex bridges prefixed",
+ args: args{match: map[string]string{
+ "bridges":
"b0x01-b0x02-b0x03-b0x04-b0x05-b0x06",
+ }},
+ want:
[]readWriteModel.BridgeAddress{readWriteModel.NewBridgeAddress(1),
readWriteModel.NewBridgeAddress(2), readWriteModel.NewBridgeAddress(3),
readWriteModel.NewBridgeAddress(4), readWriteModel.NewBridgeAddress(5),
readWriteModel.NewBridgeAddress(6)},
+ wantErr: assert.NoError,
+ },
+ {
+ name: "seven hex bridges prefixed",
+ args: args{match: map[string]string{
+ "bridges":
"b0x01-b0x02-b0x03-b0x04-b0x05-b0x06-b0x07",
+ }},
+ wantErr: assert.Error,
+ },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- m := TagHandler{
- statusRequestPattern:
tt.fields.statusRequestPattern,
- calPattern: tt.fields.calPattern,
- salPattern: tt.fields.salPattern,
- salMonitorPattern:
tt.fields.salMonitorPattern,
- mmiMonitorPattern:
tt.fields.mmiMonitorPattern,
- unityQuery: tt.fields.unityQuery,
- }
+ m := NewTagHandler()
got, err := m.extractBridges(tt.args.match)
if !tt.wantErr(t, err,
fmt.Sprintf("extractBridges(%v)", tt.args.match)) {
return