@@ -101,6 +101,51 @@ Item {
101101 }
102102 }
103103
104+ // come from Wizard Status plugin
105+ property var batteryIconNames: {
106+ "fullyCharged" : "fully-charged",
107+ "charging" : "charging",
108+ "caution" : "caution",
109+ "empty" : "empty",
110+ }
111+
112+ // come from DBUS com.canonical.indicator.power
113+ property var batteryLevelDBusSignals: {
114+ "80": {"battery-level": {'valid': true, 'state': 80}},
115+ "100": {"battery-level": {'valid': true, 'state': 100}}
116+ }
117+ property var deviceStateDBusSignals: {
118+ "fullyCharged" : {'device-state': {'valid': true, 'state': "fully-charged"}},
119+ "charging" : {'device-state': {'valid': true, 'state': "charging"}},
120+ "discharging" : {'device-state': {'valid': true, 'state': "discharging"}}
121+ }
122+
123+ property var combinedDBusSignals: {
124+ "hasMessageAndCharging" : {
125+ "messages" : {
126+ 'valid': true,
127+ 'state': {
128+ 'icons': [ 'indicator-messages-new' ]
129+ }
130+ },
131+ 'device-state': {'valid': true, 'state': "charging"}
132+ },
133+ "hasMessageAndFullyCharged" : {
134+ "messages" : {
135+ 'valid': true,
136+ 'state': {
137+ 'icons': [ 'indicator-messages-new' ]
138+ }
139+ },
140+ 'device-state': {'valid': true, 'state': "fully-charged"}
141+ }
142+ }
143+
144+ property color darkGreen: "darkgreen"
145+ property color green: "green"
146+ property color white: "white"
147+ property color orangeRed: "orangeRed"
148+
104149 UT.UnityTestCase {
105150 name: "IndicatorsLight"
106151 when: windowShown
@@ -115,18 +160,119 @@ Item {
115160
116161 function test_LightsStatus_data() {
117162 return [
118− { tag: "Powerd.On with No Message", powerd: Powerd.On, actionData: noNewMessage, expected: Lights.Off },
119− { tag: "Powerd.Off with No Message", powerd: Powerd.Off, actionData: noNewMessage, expected: Lights.Off },
120− { tag: "Powerd.On with New Message", powerd: Powerd.On, actionData: newMessage, expected: Lights.Off },
121− { tag: "Powerd.Off with New Message", powerd: Powerd.Off, actionData: newMessage, expected: Lights.On },
163+ //
164+ // new messages
165+ //
166+ { tag: "Powerd.On with No Message", powerd: Powerd.On, actionData: noNewMessage, expectedLightsState: Lights.Off },
167+ { tag: "Powerd.Off with No Message", powerd: Powerd.Off, actionData: noNewMessage, expectedLightsState: Lights.Off },
168+ { tag: "Powerd.On with New Message", powerd: Powerd.On, actionData: newMessage, expectedLightsState: Lights.Off },
169+ { tag: "Powerd.Off with New Message", powerd: Powerd.Off, actionData: newMessage, expectedLightsState: Lights.On },
170+
171+ //
172+ // show charging
173+ //
174+ { tag: "Powerd.Off while charging",
175+ expectedLightsState: Lights.On,
176+ powerd: Powerd.Off, actionData: deviceStateDBusSignals.charging },
177+
178+ { tag: "Powerd.On while charging",
179+ expectedLightsState: Lights.Off,
180+ powerd: Powerd.On, actionData: deviceStateDBusSignals.charging },
181+
182+ { tag: "Powerd.On while charging",
183+ expectedLightsState: Lights.Off,
184+ powerd: Powerd.On, wizardStatus: batteryIconNames.charging },
185+
186+ //
187+ // show charging and full
188+ //
189+ { tag: "Powerd.Off while charging and battery full",
190+ expectedLightsState: Lights.On, expectedLightsColor: green,
191+ powerd: Powerd.Off, actionData: deviceStateDBusSignals.fullyCharged },
192+
193+ { tag: "Powerd.On while charging and battery full",
194+ expectedLightsState: Lights.Off,
195+ powerd: Powerd.On, actionData: deviceStateDBusSignals.fullyCharged },
196+
197+ { tag: "Powerd.Off while discharging and battery full",
198+ expectedLightsState: Lights.Off,
199+ powerd: Powerd.Off, actionData: deviceStateDBusSignals.discharging, wizardStatus: batteryIconNames.fullyCharged },
200+
201+ //
202+ // show empty
203+ //
204+ { tag: "Powerd.Off while discharging and battery empty",
205+ expectedLightsState: Lights.On, expectedLightsColor: orangeRed,
206+ powerd: Powerd.Off, wizardStatus: batteryIconNames.caution },
207+
208+ { tag: "Powerd.On while discharging and battery empty",
209+ expectedLightsState: Lights.Off,
210+ powerd: Powerd.On, wizardStatus: batteryIconNames.caution },
211+
212+ { tag: "Powerd.On while discharging and battery empty",
213+ expectedLightsState: Lights.Off,
214+ powerd: Powerd.On, wizardStatus: batteryIconNames.empty },
215+
216+ { tag: "Powerd.Off while charging and battery empty",
217+ expectedLightsState: Lights.On, expectedLightsColor: white,
218+ powerd: Powerd.Off, actionData: deviceStateDBusSignals.charging },
219+
220+ //
221+ // new message has highest priority
222+ //
223+ { tag: "Powerd.Off with New Message, discharging and battery empty",
224+ expectedLightsState: Lights.On,
225+ expectedLightsColor: darkGreen,
226+ expectedLightsOnMillisec: 1000,
227+ expectedLightsOffMillisec: 3000,
228+ powerd: Powerd.Off, actionData: newMessage, wizardStatus: batteryIconNames.caution },
229+
230+ { tag: "Powerd.Off with New Message and charging",
231+ expectedLightsState: Lights.On,
232+ expectedLightsColor: darkGreen,
233+ expectedLightsOnMillisec: 1000,
234+ expectedLightsOffMillisec: 3000,
235+ powerd: Powerd.Off, actionData: combinedDBusSignals.hasMessageAndCharging },
236+
237+ { tag: "Powerd.Off with New Message, charging and battery full",
238+ expectedLightsState: Lights.On,
239+ expectedLightsColor: darkGreen,
240+ expectedLightsOnMillisec: 1000,
241+ expectedLightsOffMillisec: 3000,
242+ powerd: Powerd.Off, actionData: combinedDBusSignals.hasMessageAndFullyCharged },
243+
244+ //
245+ // use battery level
246+ //
247+ { tag: "Powerd.Off while charging and battery level at 80%",
248+ expectedLightsState: Lights.On, expectedLightsColor: white,
249+ powerd: Powerd.Off, actionData: batteryLevelDBusSignals["80"], wizardStatus: batteryIconNames.charging },
250+
251+ { tag: "Powerd.Off while charging and battery level at 100%",
252+ expectedLightsState: Lights.On, expectedLightsColor: green,
253+ expectedLightsOnMillisec: 1000,
254+ expectedLightsOffMillisec: 0,
255+ powerd: Powerd.Off, actionData: batteryLevelDBusSignals["100"], wizardStatus: batteryIconNames.charging },
122256 ]
123257 }
124258
125259 function test_LightsStatus(data) {
126− Powerd.setStatus(data.powerd, Powerd.Unknown);
127− ActionData.data = data.actionData;
260+ console.log("----------------------------------------------------------------")
261+
262+ if (data.hasOwnProperty("powerd"))
263+ Powerd.setStatus(data.powerd, Powerd.Unknown)
264+ if (data.hasOwnProperty("actionData"))
265+ ActionData.data = data.actionData
266+ if (data.hasOwnProperty("wizardStatus"))
267+ loader.item.batteryIconName = data.wizardStatus
128268
129− compare(Lights.state, data.expected, "Light does not match expected value");
269+ compare(Lights.state, data.expectedLightsState, "Lights state does not match expected value");
270+ if (data.hasOwnProperty("expectedLightsColor"))
271+ compare(Lights.color, data.expectedLightsColor, "Lights color does not match expected value")
272+ if (data.hasOwnProperty("expectedLightsOnMillisec"))
273+ compare(Lights.onMillisec, data.expectedLightsOnMillisec, "Lights OnMillisec does not match expected value")
274+ if (data.hasOwnProperty("expectedLightsOffMillisec"))
275+ compare(Lights.offMillisec, data.expectedLightsOffMillisec, "Lights OffMillisec does not match expected value")
130276 }
131277 }
132278}