@@ -9,199 +9,139 @@ import (
99)
1010
1111const (
12- expectedColor = "#768954"
12+ chargingColor = "#123456"
13+ dischargingColor = "#765432"
14+ chargedColor = "#248644"
1315)
1416
15- func setupBatteryTests (state battery.State , batteryLevel float64 , props * properties ) * batt {
16- env := & MockedEnvironment {}
17- bt := & battery.Battery {
18- State : state ,
19- Full : 100 ,
20- Current : batteryLevel ,
21- }
22- batteries := []* battery.Battery {
23- bt ,
24- }
25- env .On ("getBatteryInfo" , nil ).Return (batteries , nil )
26- b := & batt {
27- props : props ,
28- env : env ,
29- }
30- b .enabled ()
31- return b
32- }
33-
34- func TestBatteryCharging (t * testing.T ) {
35- props := & properties {
36- values : map [Property ]interface {}{
37- ChargingIcon : "charging " ,
38- },
39- }
40- b := setupBatteryTests (battery .Charging , 80 , props )
41- assert .Equal (t , "charging 80" , b .string ())
42- }
43-
44- func TestBatteryCharged (t * testing.T ) {
45- props := & properties {
46- values : map [Property ]interface {}{
47- ChargedIcon : "charged " ,
48- },
49- }
50- b := setupBatteryTests (battery .Full , 100 , props )
51- assert .Equal (t , "charged 100" , b .string ())
52- }
53-
54- func TestBatteryDischarging (t * testing.T ) {
55- props := & properties {
56- values : map [Property ]interface {}{
57- DischargingIcon : "going down " ,
17+ func TestBatterySegmentSingle (t * testing.T ) {
18+ cases := []struct {
19+ Case string
20+ BatteryState battery.State
21+ BatteryLevel float64
22+ ExpectedString string
23+ ExpectedEnabled bool
24+ ExpectedColor string
25+ ColorBackground bool
26+ DisplayError bool
27+ Error error
28+ DisableCharging bool
29+ }{
30+ {Case : "80% charging" , BatteryState : battery .Charging , BatteryLevel : 80 , ExpectedString : "charging 80" , ExpectedEnabled : true },
31+ {Case : "battery full" , BatteryState : battery .Full , BatteryLevel : 100 , ExpectedString : "charged 100" , ExpectedEnabled : true },
32+ {Case : "70% discharging" , BatteryState : battery .Discharging , BatteryLevel : 70 , ExpectedString : "going down 70" , ExpectedEnabled : true },
33+ {
34+ Case : "discharging background color" ,
35+ BatteryState : battery .Discharging ,
36+ BatteryLevel : 70 ,
37+ ExpectedString : "going down 70" ,
38+ ExpectedEnabled : true ,
39+ ColorBackground : true ,
40+ ExpectedColor : dischargingColor ,
5841 },
59- }
60- b := setupBatteryTests (battery .Discharging , 70 , props )
61- assert .Equal (t , "going down 70" , b .string ())
62- }
63-
64- func TestBatteryBackgroundColor (t * testing.T ) {
65- expected := expectedColor
66- props := & properties {
67- background : "#111111" ,
68- values : map [Property ]interface {}{
69- DischargingIcon : "going down " ,
70- ColorBackground : true ,
71- DischargingColor : expected ,
42+ {
43+ Case : "charging background color" ,
44+ BatteryState : battery .Charging ,
45+ BatteryLevel : 70 ,
46+ ExpectedString : "charging 70" ,
47+ ExpectedEnabled : true ,
48+ ColorBackground : true ,
49+ ExpectedColor : chargingColor ,
7250 },
73- }
74- b := setupBatteryTests (battery .Discharging , 70 , props )
75- b .string ()
76- assert .Equal (t , expected , props .background )
77- }
78-
79- func TestBatteryBackgroundColorInvalid (t * testing.T ) {
80- expected := expectedColor
81- props := & properties {
82- background : expected ,
83- values : map [Property ]interface {}{
84- DischargingIcon : "going down " ,
85- ColorBackground : true ,
86- DischargingColor : "derp" ,
51+ {
52+ Case : "charged background color" ,
53+ BatteryState : battery .Full ,
54+ BatteryLevel : 70 ,
55+ ExpectedString : "charged 70" ,
56+ ExpectedEnabled : true ,
57+ ColorBackground : true ,
58+ ExpectedColor : chargedColor ,
8759 },
88- }
89- b := setupBatteryTests (battery .Discharging , 70 , props )
90- b .string ()
91- assert .Equal (t , expected , props .background )
92- }
93-
94- func TestBatteryForegroundColor (t * testing.T ) {
95- expected := expectedColor
96- props := & properties {
97- foreground : "#111111" ,
98- values : map [Property ]interface {}{
99- DischargingIcon : "going down " ,
100- ColorBackground : false ,
101- DischargingColor : expected ,
60+ {
61+ Case : "discharging foreground color" ,
62+ BatteryState : battery .Discharging ,
63+ BatteryLevel : 70 ,
64+ ExpectedString : "going down 70" ,
65+ ExpectedEnabled : true ,
66+ ExpectedColor : dischargingColor ,
10267 },
103- }
104- b := setupBatteryTests (battery .Discharging , 70 , props )
105- b .string ()
106- assert .Equal (t , expected , props .foreground )
107- }
108-
109- func TestBatteryForegroundColorInvalid (t * testing.T ) {
110- expected := expectedColor
111- props := & properties {
112- foreground : expected ,
113- values : map [Property ]interface {}{
114- DischargingIcon : "going down " ,
115- ColorBackground : false ,
116- DischargingColor : "derp" ,
68+ {
69+ Case : "charging foreground color" ,
70+ BatteryState : battery .Charging ,
71+ BatteryLevel : 70 ,
72+ ExpectedString : "charging 70" ,
73+ ExpectedEnabled : true ,
74+ ExpectedColor : chargingColor ,
11775 },
118- }
119- b := setupBatteryTests (battery .Discharging , 70 , props )
120- b .string ()
121- assert .Equal (t , expected , props .foreground )
122- }
123-
124- func TestBatteryError (t * testing.T ) {
125- env := & MockedEnvironment {}
126- err := errors .New ("oh snap" )
127- batteries := []* battery.Battery {}
128- env .On ("getBatteryInfo" , nil ).Return (batteries , err )
129- b := & batt {
130- props : & properties {
131- values : map [Property ]interface {}{
132- DisplayError : true ,
133- },
76+ {
77+ Case : "charged foreground color" ,
78+ BatteryState : battery .Full ,
79+ BatteryLevel : 70 ,
80+ ExpectedString : "charged 70" ,
81+ ExpectedEnabled : true ,
82+ ExpectedColor : chargedColor ,
83+ },
84+ {Case : "battery error" , DisplayError : true , Error : errors .New ("oh snap" ), ExpectedString : "oh snap" , ExpectedEnabled : true },
85+ {Case : "battery error disabled" , Error : errors .New ("oh snap" )},
86+ {Case : "no batteries" , DisplayError : true , Error : & noBatteryError {}},
87+ {Case : "display charging disabled: charging" , BatteryState : battery .Charging , DisableCharging : true },
88+ {Case : "display charging disabled: charged" , BatteryState : battery .Full , DisableCharging : true },
89+ {
90+ Case : "display charging disabled: discharging" ,
91+ BatteryState : battery .Discharging ,
92+ BatteryLevel : 70 ,
93+ ExpectedString : "going down 70" ,
94+ ExpectedEnabled : true ,
95+ DisableCharging : true ,
13496 },
135- env : env ,
13697 }
137- assert .True (t , b .enabled ())
138- assert .Equal (t , "oh snap" , b .string ())
139- }
14098
141- func TestBatteryErrorHidden (t * testing.T ) {
142- env := & MockedEnvironment {}
143- err := errors .New ("oh snap" )
144- batteries := []* battery.Battery {}
145- env .On ("getBatteryInfo" , nil ).Return (batteries , err )
146- b := & batt {
147- props : & properties {
148- values : map [Property ]interface {}{
149- DisplayError : false ,
99+ for _ , tc := range cases {
100+ env := & MockedEnvironment {}
101+ batteries := []* battery.Battery {
102+ {
103+ Full : 100 ,
104+ State : tc .BatteryState ,
105+ Current : tc .BatteryLevel ,
150106 },
151- },
152- env : env ,
153- }
154- assert .False (t , b .enabled ())
155- }
156-
157- func TestBatteryNoBattery (t * testing.T ) {
158- env := & MockedEnvironment {}
159- err := & noBatteryError {}
160- batteries := []* battery.Battery {}
161- env .On ("getBatteryInfo" , nil ).Return (batteries , err )
162- b := & batt {
163- props : & properties {
107+ }
108+ props := & properties {
109+ background : "#111111" ,
110+ foreground : "#ffffff" ,
164111 values : map [Property ]interface {}{
165- DisplayError : true ,
112+ ChargingIcon : "charging " ,
113+ ChargedIcon : "charged " ,
114+ DischargingIcon : "going down " ,
115+ DischargingColor : dischargingColor ,
116+ ChargedColor : chargedColor ,
117+ ChargingColor : chargingColor ,
118+ ColorBackground : tc .ColorBackground ,
119+ DisplayError : tc .DisplayError ,
166120 },
167- },
168- env : env ,
169- }
170- assert .False (t , b .enabled ())
171- }
172-
173- func TestBatteryDischargingAndDisplayChargingDisabled (t * testing.T ) {
174- props := & properties {
175- values : map [Property ]interface {}{
176- DischargingIcon : "going down " ,
177- DisplayCharging : false ,
178- },
179- }
180- b := setupBatteryTests (battery .Discharging , 70 , props )
181- assert .Equal (t , true , b .enabled ())
182- assert .Equal (t , "going down 70" , b .string ())
183- }
184-
185- func TestBatteryChargingAndDisplayChargingDisabled (t * testing.T ) {
186- props := & properties {
187- values : map [Property ]interface {}{
188- ChargingIcon : "charging " ,
189- DisplayCharging : false ,
190- },
191- }
192- b := setupBatteryTests (battery .Charging , 80 , props )
193- assert .Equal (t , false , b .enabled ())
194- }
195-
196- func TestBatteryChargedAndDisplayChargingDisabled (t * testing.T ) {
197- props := & properties {
198- values : map [Property ]interface {}{
199- ChargedIcon : "charged " ,
200- DisplayCharging : false ,
201- },
121+ }
122+ if tc .DisableCharging {
123+ props .values [DisplayCharging ] = false
124+ }
125+ env .On ("getBatteryInfo" , nil ).Return (batteries , tc .Error )
126+ b := & batt {
127+ props : props ,
128+ env : env ,
129+ }
130+ enabled := b .enabled ()
131+ assert .Equal (t , tc .ExpectedEnabled , enabled , tc .Case )
132+ if ! enabled {
133+ continue
134+ }
135+ assert .Equal (t , tc .ExpectedString , b .string (), tc .Case )
136+ if len (tc .ExpectedColor ) == 0 {
137+ continue
138+ }
139+ actualColor := b .props .foreground
140+ if tc .ColorBackground {
141+ actualColor = b .props .background
142+ }
143+ assert .Equal (t , tc .ExpectedColor , actualColor , tc .Case )
202144 }
203- b := setupBatteryTests (battery .Full , 100 , props )
204- assert .Equal (t , false , b .enabled ())
205145}
206146
207147func TestGetBatteryColors (t * testing.T ) {
@@ -273,3 +213,25 @@ func TestGetBatteryColors(t *testing.T) {
273213 assert .Equal (t , tc .ExpectedColor , color , tc .Case )
274214 }
275215}
216+
217+ func TestMapBatteriesState (t * testing.T ) {
218+ cases := []struct {
219+ Case string
220+ ExpectedState battery.State
221+ CurrentState battery.State
222+ NewState battery.State
223+ }{
224+ {Case : "charging > charged" , ExpectedState : battery .Charging , CurrentState : battery .Full , NewState : battery .Charging },
225+ {Case : "charging < discharging" , ExpectedState : battery .Discharging , CurrentState : battery .Discharging , NewState : battery .Charging },
226+ {Case : "charging == charging" , ExpectedState : battery .Charging , CurrentState : battery .Charging , NewState : battery .Charging },
227+ {Case : "discharging > charged" , ExpectedState : battery .Discharging , CurrentState : battery .Full , NewState : battery .Discharging },
228+ {Case : "discharging > unknown" , ExpectedState : battery .Discharging , CurrentState : battery .Unknown , NewState : battery .Discharging },
229+ {Case : "discharging > full" , ExpectedState : battery .Discharging , CurrentState : battery .Full , NewState : battery .Discharging },
230+ {Case : "discharging > charging 2" , ExpectedState : battery .Discharging , CurrentState : battery .Charging , NewState : battery .Discharging },
231+ {Case : "discharging > empty" , ExpectedState : battery .Discharging , CurrentState : battery .Empty , NewState : battery .Discharging },
232+ }
233+ for _ , tc := range cases {
234+ batt := & batt {}
235+ assert .Equal (t , tc .ExpectedState , batt .mapMostLogicalState (tc .CurrentState , tc .NewState ), tc .Case )
236+ }
237+ }
0 commit comments