-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathstring_test.go
77 lines (70 loc) · 2.92 KB
/
string_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package insteon
import (
"flag"
"fmt"
"testing"
"github.com/abates/insteon/commands"
)
func TestGetSet(t *testing.T) {
tests := []struct {
name string
getter flag.Getter
input string
want interface{}
wantStr string
}{
{"group", new(Group), "128", Group(128), "128"},
{"address", new(Address), "01.04.07", Address(0x10407), "01.04.07"},
{"address", new(Address), "1.4.7", Address(0x10407), "01.04.07"},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
err := test.getter.Set(test.input)
if err == nil {
got := test.getter.Get()
if test.want != got {
t.Errorf("Wanted %v of type %T but got %v of type %T", test.want, test.want, got, got)
}
gotStr := test.getter.String()
if test.wantStr != gotStr {
t.Errorf("Wanted string %q got %q", test.wantStr, gotStr)
}
} else {
t.Errorf("Unexpected error: %v", err)
}
})
}
}
func TestDeviceString(t *testing.T) {
tests := []struct {
desc string
device fmt.Stringer
want string
}{
{"I1 EngineVersion", VerI1, "I1"},
{"I2 EngineVersion", VerI2, "I2"},
{"I2Cs EngineVersion", VerI2Cs, "I2Cs"},
{"Unknown EngineVersion", EngineVersion(3), "unknown"},
{"Link Record", &LinkRecord{Flags: 0xd0, Group: Group(1), Address: Address(0x10203), Data: [3]byte{4, 5, 6}}, "UC 1 01.02.03 0x04 0x05 0x06"},
{"StandardDirectFlag", StandardDirectMessage, "SD 2:2"},
{"ExtendedDirectFlag", ExtendedDirectMessage, "ED 2:2"},
{"AvailableController", AvailableController, "AC"},
{"UnavailableController", UnavailableController, "UC"},
{"AvailableResponder", AvailableResponder, "AR"},
{"UnavailableResponder", UnavailableResponder, "UR"},
{"Firmware Version", FirmwareVersion(42), "42"},
{"Broadcast Message", &Message{Address(0x10203), Address(0x040506), StandardBroadcast, commands.SetButtonPressedController, nil}, "SB 2:2 01.02.03 -> ff.ff.ff DevCat 04.05 Firmware 6 Set-button Pressed (controller)"},
{"All-Link Broadcast Message", &Message{Address(0x010203), Address(0x04050e), StandardAllLinkBroadcast, commands.AllLinkRecall, nil}, "SA 2:2 01.02.03 -> ff.ff.ff All-link recall Group(14)"},
{"All-Link Cleanup Message", &Message{Address(0x010203), Address(0x04050e), Flag(MsgTypeAllLinkCleanup, false, 2, 2), commands.AllLinkRecall, nil}, "SC 2:2 01.02.03 -> 04.05.0e Cleanup All-link recall"},
{"Extended Direct", &Message{Address(0x010203), Address(0x040506), ExtendedDirectMessage, commands.EnterLinkingModeExt, make([]byte, 14)}, "ED 2:2 01.02.03 -> 04.05.06 Enter Linking Mode (i2cs) [00 00 00 00 00 00 00 00 00 00 00 00 00 00]"},
{"Standard Ack", &Message{Address(0x010203), Address(0x040506), StandardDirectAck, commands.EnterLinkingMode, nil}, "SD Ack 2:2 01.02.03 -> 04.05.06 9.0"},
}
for _, test := range tests {
t.Run(test.desc, func(t *testing.T) {
got := test.device.String()
if test.want != got {
t.Errorf("want %q got %q", test.want, got)
}
})
}
}