-
Notifications
You must be signed in to change notification settings - Fork 9
/
driver_test.go
117 lines (101 loc) · 2.54 KB
/
driver_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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// Copyright (C) 2019 Evgeny Kuznetsov ([email protected])
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
package main
import (
"testing"
"github.com/nicksnyder/go-i18n/v2/i18n"
)
func TestParseStatus(t *testing.T) {
type testval struct {
status string
state string
min int
max int
}
var tests = []testval{
{"REG[0xe4]==0x28\nREG[0xe5]==0x46\nbattery protection is on\nthresholds:\nminimum 40 %\nmaximum 70 %", "on", 40, 70},
}
for _, test := range tests {
state, min, max := parseStatus(test.status)
if state != test.state || min != test.min || max != test.max {
t.Error(
"For:\n", test.status, "\nexpected", test.state, "got", state,
"\nexpected min", test.min, "got", min,
"\nexpected max", test.max, "got", max,
)
}
}
}
func TestBtobb(t *testing.T) {
type testval struct {
b bool
s string
}
var tests = []testval{
{true, "1"},
{false, "0"},
}
for _, test := range tests {
result := string(btobb(test.b))
if result != test.s {
t.Error("For", test.b, "expected", test.s, "got", result)
}
}
}
func TestGetStatus(t *testing.T) {
bundle := i18nPrepare()
localizer = i18n.NewLocalizer(bundle, "en-US")
config.thresh = threshDriver{&mockDriver{}}
tests := map[string]struct {
min, max int
want string
}{
"0 0": {
min: 0,
max: 0,
want: "Battery protection is OFF",
},
"0 100": {
min: 0,
max: 100,
want: "Battery protection is OFF",
},
"travel": {
min: 95,
max: 100,
want: "Battery protection mode: TRAVEL",
},
}
for name, tc := range tests {
t.Run(name, func(t *testing.T) {
config.thresh.set(tc.min, tc.max)
got := getStatus()
if got != tc.want {
t.Fatalf("want: %v, got: %v", tc.want, got)
}
})
}
}
type mockDriver struct {
vMin, vMax int
}
func (drv *mockDriver) get() (min, max int, err error) {
return drv.vMin, drv.vMax, nil
}
func (drv *mockDriver) write(min, max int) error {
drv.vMin = min
drv.vMax = max
return nil
}