@@ -101,6 +101,51 @@ Item {
104+ // come from Wizard Status plugin
105+ property var batteryIconNames: {
106+ "fullyCharged" : "fully-charged",
107+ "charging" : "charging",
108+ "caution" : "caution",
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}}
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"}}
123+ property var combinedDBusSignals: {
124+ "hasMessageAndCharging" : {
128+ 'icons': [ 'indicator-messages-new' ]
131+ 'device-state': {'valid': true, 'state': "charging"}
133+ "hasMessageAndFullyCharged" : {
137+ 'icons': [ 'indicator-messages-new' ]
140+ 'device-state': {'valid': true, 'state': "fully-charged"}
144+ property color darkGreen: "darkgreen"
145+ property color green: "green"
146+ property color white: "white"
147+ property color orangeRed: "orangeRed"
104 UT.UnityTestCase {
149 UT.UnityTestCase {
105 name: "IndicatorsLight"
150 name: "IndicatorsLight"
106 when: windowShown
151 when: windowShown
@@ -115,18 +160,119 @@ Item {
116 function test_LightsStatus_data() {
161 function test_LightsStatus_data() {
118− { tag: "Powerd.On with No Message", powerd: Powerd.On, actionData: noNewMessage, expected: Lights.Off },
166+ { tag: "Powerd.On with No Message", powerd: Powerd.On, actionData: noNewMessage, expectedLightsState: Lights.Off },
119− { tag: "Powerd.Off with No Message", powerd: Powerd.Off, actionData: noNewMessage, expected: Lights.Off },
167+ { tag: "Powerd.Off with No Message", powerd: Powerd.Off, actionData: noNewMessage, expectedLightsState: Lights.Off },
120− { tag: "Powerd.On with New Message", powerd: Powerd.On, actionData: newMessage, expected: Lights.Off },
168+ { tag: "Powerd.On with New Message", powerd: Powerd.On, actionData: newMessage, expectedLightsState: Lights.Off },
121− { tag: "Powerd.Off with New Message", powerd: Powerd.Off, actionData: newMessage, expected: Lights.On },
169+ { tag: "Powerd.Off with New Message", powerd: Powerd.Off, actionData: newMessage, expectedLightsState: Lights.On },
174+ { tag: "Powerd.Off while charging",
175+ expectedLightsState: Lights.On,
176+ powerd: Powerd.Off, actionData: deviceStateDBusSignals.charging },
178+ { tag: "Powerd.On while charging",
179+ expectedLightsState: Lights.Off,
180+ powerd: Powerd.On, actionData: deviceStateDBusSignals.charging },
182+ { tag: "Powerd.On while charging",
183+ expectedLightsState: Lights.Off,
184+ powerd: Powerd.On, wizardStatus: batteryIconNames.charging },
187+ // show charging and full
189+ { tag: "Powerd.Off while charging and battery full",
190+ expectedLightsState: Lights.On, expectedLightsColor: green,
191+ powerd: Powerd.Off, actionData: deviceStateDBusSignals.fullyCharged },
193+ { tag: "Powerd.On while charging and battery full",
194+ expectedLightsState: Lights.Off,
195+ powerd: Powerd.On, actionData: deviceStateDBusSignals.fullyCharged },
197+ { tag: "Powerd.Off while discharging and battery full",
198+ expectedLightsState: Lights.Off,
199+ powerd: Powerd.Off, actionData: deviceStateDBusSignals.discharging, wizardStatus: batteryIconNames.fullyCharged },
204+ { tag: "Powerd.Off while discharging and battery empty",
205+ expectedLightsState: Lights.On, expectedLightsColor: orangeRed,
206+ powerd: Powerd.Off, wizardStatus: batteryIconNames.caution },
208+ { tag: "Powerd.On while discharging and battery empty",
209+ expectedLightsState: Lights.Off,
210+ powerd: Powerd.On, wizardStatus: batteryIconNames.caution },
212+ { tag: "Powerd.On while discharging and battery empty",
213+ expectedLightsState: Lights.Off,
214+ powerd: Powerd.On, wizardStatus: batteryIconNames.empty },
216+ { tag: "Powerd.Off while charging and battery empty",
217+ expectedLightsState: Lights.On, expectedLightsColor: white,
218+ powerd: Powerd.Off, actionData: deviceStateDBusSignals.charging },
221+ // new message has highest priority
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 },
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 },
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 },
245+ // use battery level
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 },
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 },
125 function test_LightsStatus(data) {
259 function test_LightsStatus(data) {
260+ console.log("----------------------------------------------------------------")
262+ if (data.hasOwnProperty("powerd"))
126− Powerd.setStatus(data.powerd, Powerd.Unknown);
263+ Powerd.setStatus(data.powerd, Powerd.Unknown)
264+ if (data.hasOwnProperty("actionData"))
127− ActionData.data = data.actionData;
265+ ActionData.data = data.actionData
266+ if (data.hasOwnProperty("wizardStatus"))
267+ loader.item.batteryIconName = data.wizardStatus
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")