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 eecde5a63d fix(plc4go/cbus): fix broken wildcards
eecde5a63d is described below
commit eecde5a63d11cf1ca37640e755d74cb5879e141f
Author: Sebastian Rühl <[email protected]>
AuthorDate: Tue Apr 4 10:40:18 2023 +0200
fix(plc4go/cbus): fix broken wildcards
---
plc4go/internal/cbus/Browser.go | 2 +-
plc4go/internal/cbus/Query.go | 12 +-
plc4go/internal/cbus/TagHandler.go | 152 ++++++++++--------------
plc4go/internal/cbus/TagHandler_test.go | 199 ++++++++++++++++++++++++++------
4 files changed, 233 insertions(+), 132 deletions(-)
diff --git a/plc4go/internal/cbus/Browser.go b/plc4go/internal/cbus/Browser.go
index 9a032139be..0266e591c1 100644
--- a/plc4go/internal/cbus/Browser.go
+++ b/plc4go/internal/cbus/Browser.go
@@ -60,7 +60,7 @@ func (m Browser) BrowseQuery(ctx context.Context,
browseRequest apiModel.PlcBrow
allAttributes := false
var attributes []readWriteModel.Attribute
if unitAddress := query.unitAddress; unitAddress != nil {
- units = append(units, *unitAddress)
+ units = append(units, unitAddress)
} else {
// TODO: check if we still want the option to brute
force all addresses
installedUnitAddressBytes, err :=
m.getInstalledUnitAddressBytes(ctx)
diff --git a/plc4go/internal/cbus/Query.go b/plc4go/internal/cbus/Query.go
index 6638aab3ea..11eea3838a 100644
--- a/plc4go/internal/cbus/Query.go
+++ b/plc4go/internal/cbus/Query.go
@@ -35,11 +35,11 @@ import (
type UnitInfoQuery interface {
apiModel.PlcQuery
- GetUnitAddress() *readWriteModel.UnitAddress
+ GetUnitAddress() readWriteModel.UnitAddress
GetAttribute() *readWriteModel.Attribute
}
-func NewUnitInfoQuery(unitAddress *readWriteModel.UnitAddress, attribute
*readWriteModel.Attribute, numElements uint16) UnitInfoQuery {
+func NewUnitInfoQuery(unitAddress readWriteModel.UnitAddress, attribute
*readWriteModel.Attribute, numElements uint16) UnitInfoQuery {
return &unitInfoQuery{
unitAddress: unitAddress,
tagType: UNIT_INFO,
@@ -50,7 +50,7 @@ func NewUnitInfoQuery(unitAddress
*readWriteModel.UnitAddress, attribute *readWr
type unitInfoQuery struct {
tagType TagType
- unitAddress *readWriteModel.UnitAddress
+ unitAddress readWriteModel.UnitAddress
attribute *readWriteModel.Attribute
numElements uint16
}
@@ -58,7 +58,7 @@ type unitInfoQuery struct {
func (u unitInfoQuery) GetQueryString() string {
unitAddressString := "*"
if u.unitAddress != nil {
- unitAddressString = fmt.Sprintf("%d",
(*u.unitAddress).GetAddress())
+ unitAddressString = fmt.Sprintf("%d",
u.unitAddress.GetAddress())
}
attributeString := "*"
if u.attribute != nil {
@@ -87,7 +87,7 @@ func (u unitInfoQuery) GetTagType() TagType {
return u.tagType
}
-func (u unitInfoQuery) GetUnitAddress() *readWriteModel.UnitAddress {
+func (u unitInfoQuery) GetUnitAddress() readWriteModel.UnitAddress {
return u.unitAddress
}
@@ -109,7 +109,7 @@ func (u unitInfoQuery) SerializeWithWriteBuffer(ctx
context.Context, writeBuffer
}
if unitAddress := u.unitAddress; unitAddress != nil {
- if err := (*unitAddress).SerializeWithWriteBuffer(ctx,
writeBuffer); err != nil {
+ if err := unitAddress.SerializeWithWriteBuffer(ctx,
writeBuffer); err != nil {
return err
}
}
diff --git a/plc4go/internal/cbus/TagHandler.go
b/plc4go/internal/cbus/TagHandler.go
index 7f0e1a6c3e..14762246d7 100644
--- a/plc4go/internal/cbus/TagHandler.go
+++ b/plc4go/internal/cbus/TagHandler.go
@@ -69,9 +69,9 @@ func NewTagHandler() TagHandler {
statusRequestPattern:
regexp.MustCompile(`^status/(?:(?P<bridges>b(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3})(?:-b(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3})){0,5})/)?(?P<statusRequestType>(?P<binary>binary)|level=0x(?P<startingGroupAddressLabel>00|20|40|60|80|A0|C0|E0))/(?P<application>.*)$`),
calPattern:
regexp.MustCompile(`^cal/(?:(?P<bridges>b(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3})(?:-b(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3})){0,5})-)?(?P<unitAddress>u?(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3}))/(?P<calType>reset|recall=\[(?P<recallParamNo>\w+),
?(?P<recallCount>\d+)]|identify=(?P<identifyAttribute>\w+)|getStatus=(?P<getStatusParamNo>\w+),
?(?P<getStatusCount>\d+)|write=\[(?P<writeParamNo>\w+),
?(?P<writeCode>0[xX][0-9a-fA-F][0-9a-fA-F])]|identifyReply=(?P<replyAttribute>\w+)|r
[...]
salPattern:
regexp.MustCompile(`^sal/(?:(?P<bridges>b(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3})(?:-b(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3})){0,5})/)?(?P<application>.*)/(?P<salCommand>.*)$`),
- salMonitorPattern:
regexp.MustCompile(`^salmonitor/(?P<unitAddress>u?(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3}))/(?P<application>.+)$`),
- mmiMonitorPattern:
regexp.MustCompile(`^mmimonitor/(?P<unitAddress>u?(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3}))/(?P<application>.+)$`),
- unityQuery:
regexp.MustCompile(`^info/(?P<unitAddress>u?(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3}))/(?P<identifyAttribute>.+)$`),
+ salMonitorPattern:
regexp.MustCompile(`^salmonitor/(?P<unitAddress>u?(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3}|\*))/(?P<application>.+|\*)$`),
+ mmiMonitorPattern:
regexp.MustCompile(`^mmimonitor/(?P<unitAddress>u?(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3}|\*))/(?P<application>.+|\*)$`),
+ unityQuery:
regexp.MustCompile(`^info/(?P<unitAddress>u?(?:(?:0x)?[A-Fa-f0-9]{1,2}|\d{1,3}|\*))/(?P<identifyAttribute>.+|\*)$`),
}
}
@@ -132,7 +132,7 @@ func (m TagHandler) ParseQuery(query string)
(apiModel.PlcQuery, error) {
}
func (m TagHandler) handleStatusRequestPattern(match map[string]string)
(apiModel.PlcTag, error) {
- bridgeAddresses, err := extractBridges(match)
+ bridgeAddresses, err := m.extractBridges(match)
if err != nil {
return nil, errors.Wrap(err, "error extracting bridges")
}
@@ -154,7 +154,7 @@ func (m TagHandler) handleStatusRequestPattern(match
map[string]string) (apiMode
return nil, errors.Errorf("Unknown
statusRequestType%s", statusRequestArgument)
}
}
- application, err := applicationIdFromArgument(match["application"])
+ application, err := m.applicationIdFromArgument(match["application"])
if err != nil {
return nil, errors.Wrap(err, "Error getting application id from
argument")
}
@@ -165,23 +165,12 @@ func (m TagHandler) handleCalPattern(match
map[string]string) (apiModel.PlcTag,
var unitAddress readWriteModel.UnitAddress
unitAddressArgument := match["unitAddress"]
unitAddressArgument = strings.TrimPrefix(unitAddressArgument, "u")
- if strings.HasPrefix(unitAddressArgument, "0x") {
- decodedHex, err := hex.DecodeString(unitAddressArgument[2:])
- if err != nil {
- return nil, errors.Wrap(err, "Not a valid hex")
- }
- if len(decodedHex) != 1 {
- return nil, errors.Errorf("Hex must be exatly one byte")
- }
- unitAddress = readWriteModel.NewUnitAddress(decodedHex[0])
- } else {
- atoi, err := strconv.ParseUint(unitAddressArgument, 10, 8)
- if err != nil {
- return nil, errors.Errorf("Unknown unit address %s",
unitAddressArgument)
- }
- unitAddress = readWriteModel.NewUnitAddress(byte(atoi))
+ var err error
+ unitAddress, err = m.unitAddressFromArgument(unitAddressArgument, false)
+ if err != nil {
+ return nil, errors.Wrap(err, "error getting unit address from
argument")
}
- bridgeAddresses, err := extractBridges(match)
+ bridgeAddresses, err := m.extractBridges(match)
if err != nil {
return nil, errors.Wrap(err, "error extracting bridges")
}
@@ -291,11 +280,11 @@ func (m TagHandler) handleCalPattern(match
map[string]string) (apiModel.PlcTag,
}
func (m TagHandler) handleSALPattern(match map[string]string)
(apiModel.PlcTag, error) {
- bridgeAddresses, err := extractBridges(match)
+ bridgeAddresses, err := m.extractBridges(match)
if err != nil {
return nil, errors.Wrap(err, "error extracting bridges")
}
- application, err := applicationIdFromArgument(match["application"])
+ application, err := m.applicationIdFromArgument(match["application"])
if err != nil {
return nil, errors.Wrap(err, "Error getting application id from
argument")
}
@@ -323,23 +312,10 @@ func (m TagHandler) handleSALMonitorPattern(match
map[string]string) (apiModel.P
{
unitAddressArgument := match["unitAddress"]
unitAddressArgument = strings.TrimPrefix(unitAddressArgument,
"u")
- if unitAddressArgument == "*" {
- unitAddress = nil
- } else if strings.HasPrefix(unitAddressArgument, "0x") {
- decodedHex, err :=
hex.DecodeString(unitAddressArgument[2:])
- if err != nil {
- return nil, errors.Wrap(err, "Not a valid hex")
- }
- if len(decodedHex) != 1 {
- return nil, errors.Errorf("Hex must be exatly
one byte")
- }
- unitAddress =
readWriteModel.NewUnitAddress(decodedHex[0])
- } else {
- atoi, err := strconv.ParseUint(unitAddressArgument, 10,
8)
- if err != nil {
- return nil, errors.Errorf("Unknown unit address
%s", unitAddressArgument)
- }
- unitAddress = readWriteModel.NewUnitAddress(byte(atoi))
+ var err error
+ unitAddress, err =
m.unitAddressFromArgument(unitAddressArgument, true)
+ if err != nil {
+ return nil, errors.Wrap(err, "error getting unit
address from argument")
}
}
@@ -349,7 +325,7 @@ func (m TagHandler) handleSALMonitorPattern(match
map[string]string) (apiModel.P
if applicationIdArgument == "*" {
application = nil
} else {
- applicationId, err :=
applicationIdFromArgument(applicationIdArgument)
+ applicationId, err :=
m.applicationIdFromArgument(applicationIdArgument)
if err != nil {
return nil, errors.Wrap(err, "Error getting
application id from argument")
}
@@ -365,23 +341,10 @@ func (m TagHandler) handleMMIMonitorPattern(match
map[string]string) (apiModel.P
{
unitAddressArgument := match["unitAddress"]
unitAddressArgument = strings.TrimPrefix(unitAddressArgument,
"u")
- if unitAddressArgument == "*" {
- unitAddress = nil
- } else if strings.HasPrefix(unitAddressArgument, "0x") {
- decodedHex, err :=
hex.DecodeString(unitAddressArgument[2:])
- if err != nil {
- return nil, errors.Wrap(err, "Not a valid hex")
- }
- if len(decodedHex) != 1 {
- return nil, errors.Errorf("Hex must be exatly
one byte")
- }
- unitAddress =
readWriteModel.NewUnitAddress(decodedHex[0])
- } else {
- atoi, err := strconv.ParseUint(unitAddressArgument, 10,
8)
- if err != nil {
- return nil, errors.Errorf("Unknown unit address
%s", unitAddressArgument)
- }
- unitAddress = readWriteModel.NewUnitAddress(byte(atoi))
+ var err error
+ unitAddress, err =
m.unitAddressFromArgument(unitAddressArgument, true)
+ if err != nil {
+ return nil, errors.Wrap(err, "error getting unit
address from argument")
}
}
@@ -391,7 +354,7 @@ func (m TagHandler) handleMMIMonitorPattern(match
map[string]string) (apiModel.P
if applicationIdArgument == "*" {
application = nil
} else {
- applicationId, err :=
applicationIdFromArgument(applicationIdArgument)
+ applicationId, err :=
m.applicationIdFromArgument(applicationIdArgument)
if err != nil {
return nil, errors.Wrap(err, "Error getting
application id from argument")
}
@@ -403,30 +366,13 @@ func (m TagHandler) handleMMIMonitorPattern(match
map[string]string) (apiModel.P
}
func (m TagHandler) handleUnitQuery(match map[string]string)
(apiModel.PlcQuery, error) {
- var unitAddress *readWriteModel.UnitAddress
+ var unitAddress readWriteModel.UnitAddress
unitAddressArgument := match["unitAddress"]
unitAddressArgument = strings.TrimPrefix(unitAddressArgument, "u")
- if unitAddressArgument == "*" {
- unitAddress = nil
- } else if strings.HasPrefix(unitAddressArgument, "0x") {
- decodedHex, err := hex.DecodeString(unitAddressArgument[2:])
- if err != nil {
- return nil, errors.Wrap(err, "Not a valid hex")
- }
- if len(decodedHex) != 1 {
- return nil, errors.Errorf("Hex must be exatly one byte")
- }
- var unitAddressVar readWriteModel.UnitAddress
- unitAddressVar = readWriteModel.NewUnitAddress(decodedHex[0])
- unitAddress = &unitAddressVar
- } else {
- atoi, err := strconv.ParseUint(unitAddressArgument, 10, 8)
- if err != nil {
- return nil, errors.Errorf("Unknown unit address %s",
unitAddressArgument)
- }
- var unitAddressVar readWriteModel.UnitAddress
- unitAddressVar = readWriteModel.NewUnitAddress(byte(atoi))
- unitAddress = &unitAddressVar
+ var err error
+ unitAddress, err = m.unitAddressFromArgument(unitAddressArgument, true)
+ if err != nil {
+ return nil, errors.Wrap(err, "error getting unit address from
argument")
}
var attribute *readWriteModel.Attribute
@@ -462,7 +408,30 @@ func (m TagHandler) handleUnitQuery(match
map[string]string) (apiModel.PlcQuery,
return NewUnitInfoQuery(unitAddress, attribute, 1), nil
}
-func applicationIdFromArgument(applicationIdArgument string)
(readWriteModel.ApplicationIdContainer, error) {
+func (m TagHandler) unitAddressFromArgument(unitAddressArgument string,
allowWildcard bool) (readWriteModel.UnitAddress, error) {
+ if unitAddressArgument == "*" && allowWildcard {
+ return nil, nil
+ }
+
+ if strings.HasPrefix(unitAddressArgument, "0x") {
+ decodedHex, err := hex.DecodeString(unitAddressArgument[2:])
+ if err != nil {
+ return nil, errors.Wrap(err, "Not a valid hex")
+ }
+ if len(decodedHex) != 1 {
+ return nil, errors.Errorf("Hex must be exatly one byte")
+ }
+ return readWriteModel.NewUnitAddress(decodedHex[0]), nil
+ }
+
+ atoi, err := strconv.ParseUint(unitAddressArgument, 10, 8)
+ if err != nil {
+ return nil, errors.Errorf("Unknown unit address %s",
unitAddressArgument)
+ }
+ return readWriteModel.NewUnitAddress(byte(atoi)), nil
+}
+
+func (m TagHandler) applicationIdFromArgument(applicationIdArgument string)
(readWriteModel.ApplicationIdContainer, error) {
if strings.HasPrefix(applicationIdArgument, "0x") {
decodedHex, err := hex.DecodeString(applicationIdArgument[2:])
if err != nil {
@@ -473,6 +442,7 @@ func applicationIdFromArgument(applicationIdArgument
string) (readWriteModel.App
}
return readWriteModel.ApplicationIdContainer(decodedHex[0]), nil
}
+
if atoi, err := strconv.ParseUint(applicationIdArgument, 10, 8); err ==
nil {
return readWriteModel.ApplicationIdContainer(atoi), nil
}
@@ -538,15 +508,7 @@ func applicationIdFromArgument(applicationIdArgument
string) (readWriteModel.App
}
}
-func c2nl[T CommandAndArgumentsCount](t []T) []CommandAndArgumentsCount {
- result := make([]CommandAndArgumentsCount, len(t))
- for i, e := range t {
- result[i] = e
- }
- return result
-}
-
-func extractBridges(match map[string]string) ([]readWriteModel.BridgeAddress,
error) {
+func (m TagHandler) extractBridges(match map[string]string)
([]readWriteModel.BridgeAddress, error) {
var bridgeAddresses []readWriteModel.BridgeAddress
if match["bridges"] != "" {
for _, bridge := range strings.Split(match["bridges"], "-") {
@@ -571,3 +533,11 @@ func extractBridges(match map[string]string)
([]readWriteModel.BridgeAddress, er
}
return bridgeAddresses, nil
}
+
+func c2nl[T CommandAndArgumentsCount](t []T) []CommandAndArgumentsCount {
+ result := make([]CommandAndArgumentsCount, len(t))
+ for i, e := range t {
+ result[i] = e
+ }
+ return result
+}
diff --git a/plc4go/internal/cbus/TagHandler_test.go
b/plc4go/internal/cbus/TagHandler_test.go
index 27f833c1ee..f1392c11a0 100644
--- a/plc4go/internal/cbus/TagHandler_test.go
+++ b/plc4go/internal/cbus/TagHandler_test.go
@@ -19,6 +19,7 @@
package cbus
import (
+ "fmt"
apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
readWriteModel
"github.com/apache/plc4x/plc4go/protocols/cbus/readwrite/model"
"github.com/stretchr/testify/assert"
@@ -107,6 +108,14 @@ func TestTagHandler_ParseTag(t *testing.T) {
numElements: 1,
},
},
+ {
+ name: "sal monitor all",
+ args: args{tagAddress: "salmonitor/*/*"},
+ want: &salMonitorTag{
+ tagType: SAL_MONITOR,
+ numElements: 1,
+ },
+ },
{
name: "sal monitor",
args: args{tagAddress: "salmonitor/2/LIGHTING"},
@@ -120,6 +129,14 @@ func TestTagHandler_ParseTag(t *testing.T) {
numElements: 1,
},
},
+ {
+ name: "mmi monitor all",
+ args: args{tagAddress: "mmimonitor/*/*"},
+ want: &mmiMonitorTag{
+ tagType: MMI_STATUS_MONITOR,
+ numElements: 1,
+ },
+ },
{
name: "mmi monitor",
args: args{tagAddress: "mmimonitor/2/LIGHTING"},
@@ -240,7 +257,34 @@ func TestTagHandler_ParseQuery(t *testing.T) {
args: args{query: "gobblegobble"},
wantErr: true,
},
- // TODO: other cases
+ {
+ name: "unitQuery all",
+ args: args{
+ query: "info/*/*",
+ },
+ want: &unitInfoQuery{
+ tagType: UNIT_INFO,
+ unitAddress: nil,
+ attribute: nil,
+ numElements: 1,
+ },
+ },
+ {
+ name: "unitQuery",
+ args: args{
+ query: "info/0x13/DSIStatus",
+ },
+ want: &unitInfoQuery{
+ tagType: UNIT_INFO,
+ unitAddress: readWriteModel.NewUnitAddress(19),
+ attribute: func() *readWriteModel.Attribute {
+ var attribute readWriteModel.Attribute
+ attribute =
readWriteModel.Attribute_DSIStatus
+ return &attribute
+ }(),
+ numElements: 1,
+ },
+ },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
@@ -250,14 +294,14 @@ func TestTagHandler_ParseQuery(t *testing.T) {
t.Errorf("ParseQuery() error = %v, wantErr %v",
err, tt.wantErr)
return
}
- if !reflect.DeepEqual(got, tt.want) {
+ if !assert.Equal(t, got, tt.want) {
t.Errorf("ParseQuery() got = %v, want %v", got,
tt.want)
}
})
}
}
-func TestTagHandler_handleStatusRequestPattern(t *testing.T) {
+func TestTagHandler_applicationIdFromArgument(t *testing.T) {
type fields struct {
statusRequestPattern *regexp.Regexp
calPattern *regexp.Regexp
@@ -267,14 +311,14 @@ func TestTagHandler_handleStatusRequestPattern(t
*testing.T) {
unityQuery *regexp.Regexp
}
type args struct {
- match map[string]string
+ applicationIdArgument string
}
tests := []struct {
name string
fields fields
args args
- want apiModel.PlcTag
- wantErr bool
+ want readWriteModel.ApplicationIdContainer
+ wantErr assert.ErrorAssertionFunc
}{
// TODO: Add test cases.
}
@@ -288,14 +332,51 @@ func TestTagHandler_handleStatusRequestPattern(t
*testing.T) {
mmiMonitorPattern:
tt.fields.mmiMonitorPattern,
unityQuery: tt.fields.unityQuery,
}
- got, err := m.handleStatusRequestPattern(tt.args.match)
- if (err != nil) != tt.wantErr {
- t.Errorf("handleStatusRequestPattern() error =
%v, wantErr %v", err, tt.wantErr)
+ got, err :=
m.applicationIdFromArgument(tt.args.applicationIdArgument)
+ if !tt.wantErr(t, err,
fmt.Sprintf("applicationIdFromArgument(%v)", tt.args.applicationIdArgument)) {
return
}
- if !reflect.DeepEqual(got, tt.want) {
- t.Errorf("handleStatusRequestPattern() got =
%v, want %v", got, tt.want)
+ assert.Equalf(t, tt.want, got,
"applicationIdFromArgument(%v)", tt.args.applicationIdArgument)
+ })
+ }
+}
+
+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.
+ }
+ 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,
+ }
+ got, err := m.extractBridges(tt.args.match)
+ if !tt.wantErr(t, err,
fmt.Sprintf("extractBridges(%v)", tt.args.match)) {
+ return
}
+ assert.Equalf(t, tt.want, got, "extractBridges(%v)",
tt.args.match)
})
}
}
@@ -317,7 +398,7 @@ func TestTagHandler_handleCalPattern(t *testing.T) {
fields fields
args args
want apiModel.PlcTag
- wantErr bool
+ wantErr assert.ErrorAssertionFunc
}{
// TODO: Add test cases.
}
@@ -332,13 +413,10 @@ func TestTagHandler_handleCalPattern(t *testing.T) {
unityQuery: tt.fields.unityQuery,
}
got, err := m.handleCalPattern(tt.args.match)
- if (err != nil) != tt.wantErr {
- t.Errorf("handleCalPattern() error = %v,
wantErr %v", err, tt.wantErr)
+ if !tt.wantErr(t, err,
fmt.Sprintf("handleCalPattern(%v)", tt.args.match)) {
return
}
- if !reflect.DeepEqual(got, tt.want) {
- t.Errorf("handleCalPattern() got = %v, want
%v", got, tt.want)
- }
+ assert.Equalf(t, tt.want, got, "handleCalPattern(%v)",
tt.args.match)
})
}
}
@@ -360,7 +438,7 @@ func TestTagHandler_handleMMIMonitorPattern(t *testing.T) {
fields fields
args args
want apiModel.PlcTag
- wantErr bool
+ wantErr assert.ErrorAssertionFunc
}{
// TODO: Add test cases.
}
@@ -375,12 +453,52 @@ func TestTagHandler_handleMMIMonitorPattern(t *testing.T)
{
unityQuery: tt.fields.unityQuery,
}
got, err := m.handleMMIMonitorPattern(tt.args.match)
+ if !tt.wantErr(t, err,
fmt.Sprintf("handleMMIMonitorPattern(%v)", tt.args.match)) {
+ return
+ }
+ assert.Equalf(t, tt.want, got,
"handleMMIMonitorPattern(%v)", tt.args.match)
+ })
+ }
+}
+
+func TestTagHandler_handleStatusRequestPattern(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 apiModel.PlcTag
+ wantErr bool
+ }{
+ // TODO: Add test cases.
+ }
+ 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,
+ }
+ got, err := m.handleStatusRequestPattern(tt.args.match)
if (err != nil) != tt.wantErr {
- t.Errorf("handleMMIMonitorPattern() error = %v,
wantErr %v", err, tt.wantErr)
+ t.Errorf("handleStatusRequestPattern() error =
%v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
- t.Errorf("handleMMIMonitorPattern() got = %v,
want %v", got, tt.want)
+ t.Errorf("handleStatusRequestPattern() got =
%v, want %v", got, tt.want)
}
})
}
@@ -532,33 +650,48 @@ func TestTagType_GetName(t *testing.T) {
}
}
-func Test_applicationIdFromArgument(t *testing.T) {
+func TestTagHandler_unitAddressFromArgument(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
+ unitAddressArgument string
+ allowWildcard bool
}
tests := []struct {
name string
+ fields fields
args args
- want readWriteModel.ApplicationIdContainer
- wantErr bool
+ want readWriteModel.UnitAddress
+ wantErr assert.ErrorAssertionFunc
}{
// TODO: Add test cases.
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- got, err :=
applicationIdFromArgument(tt.args.applicationIdArgument)
- if (err != nil) != tt.wantErr {
- t.Errorf("applicationIdFromArgument() error =
%v, wantErr %v", err, tt.wantErr)
- return
+ 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,
}
- if got != tt.want {
- t.Errorf("applicationIdFromArgument() got = %v,
want %v", got, tt.want)
+ got, err :=
m.unitAddressFromArgument(tt.args.unitAddressArgument, tt.args.allowWildcard)
+ if !tt.wantErr(t, err,
fmt.Sprintf("unitAddressFromArgument(%v, %v)", tt.args.unitAddressArgument,
tt.args.allowWildcard)) {
+ return
}
+ assert.Equalf(t, tt.want, got,
"unitAddressFromArgument(%v, %v)", tt.args.unitAddressArgument,
tt.args.allowWildcard)
})
}
}
-func Test_c2nl(t *testing.T) {
+func Test_c2nl1(t *testing.T) {
type args struct {
t []CommandAndArgumentsCount
}
@@ -571,9 +704,7 @@ func Test_c2nl(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- if got := c2nl(tt.args.t); !reflect.DeepEqual(got,
tt.want) {
- t.Errorf("c2nl() = %v, want %v", got, tt.want)
- }
+ assert.Equalf(t, tt.want, c2nl(tt.args.t), "c2nl(%v)",
tt.args.t)
})
}
}