diff --git a/util/modbus/modbus_test.go b/util/modbus/modbus_test.go new file mode 100644 index 000000000..c462f4958 --- /dev/null +++ b/util/modbus/modbus_test.go @@ -0,0 +1,30 @@ +package modbus + +import "testing" + +func TestParsePoint(t *testing.T) { + tc := []struct { + in string + model, block int + point string + err bool + }{ + {"103:W", 103, 0, "W", false}, + {"802:1:V", 802, 1, "V", false}, + {"802::V", 802, 1, "V", true}, + } + + for _, tc := range tc { + t.Log(tc) + + model, block, point, err := ParsePoint(tc.in) + + if (err != nil) != tc.err { + t.Errorf("unexpected error: %d:%d:%s %v", model, block, point, err) + } + + if !tc.err && (model != tc.model || block != tc.block || point != tc.point) { + t.Errorf("unexpected result: %d:%d:%s", model, block, point) + } + } +}