@@ -84,11 +84,13 @@ Item {
8484 { tag: 'switch1', type: "unity.widgets.systemsettings.tablet.switch", objectName: "switchMenu" },
8585
8686 { tag: 'button', type: "com.canonical.indicator.button", objectName: "buttonMenu" },
87− { tag: 'separator', type: "com.canonical.indicator.div", objectName: "divMenu" },
87+ { tag: 'separator', type: "com.canonical.indicator.div", objectName: "separatorMenu" },
8888 { tag: 'section', type: "com.canonical.indicator.section", objectName: "sectionMenu" },
8989 { tag: 'progress', type: "com.canonical.indicator.progress", objectName: "progressMenu" },
9090 { tag: 'slider1', type: "com.canonical.indicator.slider", objectName: "sliderMenu" },
9191 { tag: 'switch2', type: "com.canonical.indicator.switch", objectName: "switchMenu" },
92+ { tag: 'alarm', type: "com.canonical.indicator.alarm", objectName: "alarmMenu" },
93+ { tag: 'appointment', type: "com.canonical.indicator.appointment", objectName: "appointmentMenu" },
9294
9395 { tag: 'messageItem', type: "com.canonical.indicator.messages.messageitem", objectName: "messageItem" },
9496 { tag: 'sourceItem', type: "com.canonical.indicator.messages.sourceitem", objectName: "groupedMessage" },
@@ -96,8 +98,8 @@ Item {
9698 { tag: 'slider2', type: "com.canonical.unity.slider", objectName: "sliderMenu" },
9799 { tag: 'switch3', type: "com.canonical.unity.switch", objectName: "switchMenu" },
98100
99− { tag: 'mediaplayer', type: "com.canonical.unity.media-player", objectName: "standardMenu" },
100− { tag: 'playbackitem', type: "com.canonical.unity.playback-item", objectName: "standardMenu" },
101+ { tag: 'mediaplayer', type: "com.canonical.unity.media-player", objectName: "mediaPayerMenu" },
102+ { tag: 'playbackitem', type: "com.canonical.unity.playback-item", objectName: "playbackItemMenu" },
101103
102104 { tag: 'wifisection', type: "unity.widgets.systemsettings.tablet.wifisection", objectName: "wifiSection" },
103105 { tag: 'accesspoint', type: "unity.widgets.systemsettings.tablet.accesspoint", objectName: "accessPoint" },
@@ -115,6 +117,16 @@ Item {
115117 compare(loader.item.objectName, data.objectName, "Created object name does not match intended object (" + loader.item.objectName + " != " + data.objectName + ")");
116118 }
117119
120+ function test_create_checkable() {
121+ var tmpData = menuData;
122+ tmpData.isCheck = true;
123+
124+ loader.data = tmpData;
125+ loader.sourceComponent = factory.load(tmpData);
126+ tryCompareFunction(function() { return loader.item != undefined; }, true);
127+ compare(loader.item.objectName, "checkableMenu", "Should have created a checkable menu");
128+ }
129+
118130 function test_create_radio() {
119131 skip("No radio component");
120132 menuData.isRadio = true;
@@ -131,7 +143,7 @@ Item {
131143 loader.data = menuData;
132144 loader.sourceComponent = factory.load(menuData);
133145 tryCompareFunction(function() { return loader.item != undefined; }, true);
134− compare(loader.item.objectName, "divMenu", "Should have created a separator menu");
146+ compare(loader.item.objectName, "separatorMenu", "Should have created a separator menu");
135147 }
136148
137149 function test_create_sliderMenu_data() {
@@ -145,13 +157,13 @@ Item {
145157 menuData.type = "com.canonical.indicator.slider"
146158 menuData.label = data.label;
147159 menuData.sensitive = data.enabled;
148− menuData.actionState = data.value;
149160 menuData.ext = {
150161 'minIcon': "file:///testMinIcon",
151162 'maxIcon': "file:///testMaxIcon",
152163 'minValue': data.minValue,
153164 'maxValue': data.maxValue
154165 };
166+ menuData.actionState = data.value;
155167
156168 loader.data = menuData;
157169 loader.sourceComponent = factory.load(menuData);
@@ -163,7 +175,7 @@ Item {
163175 compare(loader.item.maxIcon, "file:///testMaxIcon", "MaxIcon does not match data");
164176 compare(loader.item.minimumValue, data.minValue, "MinValue does not match data");
165177 compare(loader.item.maximumValue, data.maxValue, "MaxValue does not match data");
166− compare(loader.item.value, data.value, "Calue does not match data");
178+ compare(loader.item.value, data.value, "Value does not match data");
167179 compare(loader.item.enabled, data.enabled, "Enabled does not match data");
168180 }
169181
@@ -232,7 +244,7 @@ Item {
232244
233245 function test_create_standardMenu_data() {
234246 return [
235− {label: "testLabel1", enabled: true, icon: "file:///testIcon" },
247+ {label: "testLabel1", enabled: true, icon: "file:///testIcon1" },
236248 {label: "testLabel2", enabled: false, icon: "file:///testIcon2"},
237249 ];
238250 }
@@ -253,31 +265,101 @@ Item {
253265 compare(loader.item.enabled, data.enabled, "Enabled does not match data");
254266 }
255267
256− function test_create_switchMenu_data() {
268+ function test_create_checkableMenu_data() {
257269 return [
258270 {label: "testLabel1", enabled: true, checked: false },
259271 {label: "testLabel2", enabled: false, checked: true },
260272 ];
261273 }
262274
275+ function test_create_checkableMenu(data) {
276+ menuData.type = "";
277+ menuData.label = data.label;
278+ menuData.sensitive = data.enabled;
279+ menuData.isCheck = true;
280+ menuData.isToggled = data.checked;
281+
282+ loader.data = menuData;
283+ loader.sourceComponent = factory.load(menuData);
284+ tryCompareFunction(function() { return loader.item != undefined; }, true);
285+ compare(loader.item.objectName, "checkableMenu", "Should have created a checkable menu");
286+
287+ compare(loader.item.text, data.label, "Label does not match data");
288+ compare(loader.item.checked, data.checked, "Checked does not match data");
289+ compare(loader.item.enabled, data.enabled, "Enabled does not match data");
290+ }
291+
292+ function test_create_switchMenu_data() {
293+ return [
294+ {label: "testLabel1", enabled: true, checked: false, icon: "file:///testIcon1" },
295+ {label: "testLabel2", enabled: false, checked: true, icon: "file:///testIcon2" },
296+ ];
297+ }
298+
263299 function test_create_switchMenu(data) {
264300 menuData.type = "com.canonical.indicator.switch";
265301 menuData.label = data.label;
266302 menuData.sensitive = data.enabled;
267− menuData.icon = "file:///testIcon";
303+ menuData.icon = data.icon;
268304 menuData.isToggled = data.checked;
269305
270306 loader.data = menuData;
271307 loader.sourceComponent = factory.load(menuData);
272308 tryCompareFunction(function() { return loader.item != undefined; }, true);
273− compare(loader.item.objectName, "switchMenu", "Should have created a standard menu");
309+ compare(loader.item.objectName, "switchMenu", "Should have created a switch menu");
274310
275311 compare(loader.item.text, data.label, "Label does not match data");
276− compare(loader.item.icon, "file:///testIcon", "MaxIcon does not match data");
312+ compare(loader.item.iconSource, data.icon, "Icon does not match data");
277313 compare(loader.item.checked, data.checked, "Checked does not match data");
278314 compare(loader.item.enabled, data.enabled, "Enabled does not match data");
279315 }
280316
317+ function test_create_alarmMenu_data() {
318+ return [
319+ {label: "testLabel1", enabled: true, icon: "file:///testIcon1" },
320+ {label: "testLabel2", enabled: false, icon: "file:///testIcon2" },
321+ ];
322+ }
323+
324+ function test_create_alarmMenu(data) {
325+ menuData.type = "com.canonical.indicator.alarm";
326+ menuData.label = data.label;
327+ menuData.sensitive = data.enabled;
328+ menuData.icon = data.icon;
329+
330+ loader.data = menuData;
331+ loader.sourceComponent = factory.load(menuData);
332+ tryCompareFunction(function() { return loader.item != undefined; }, true);
333+ compare(loader.item.objectName, "alarmMenu", "Should have created a alarm menu");
334+
335+ compare(loader.item.text, data.label, "Label does not match data");
336+ compare(loader.item.iconSource, data.icon, "Icon does not match data");
337+ compare(loader.item.enabled, data.enabled, "Enabled does not match data");
338+ }
339+
340+ function test_create_appointmentMenu_data() {
341+ return [
342+ {label: "testLabel1", enabled: true, icon: "file:///testIcon1" },
343+ {label: "testLabel2", enabled: false, icon: "file:///testIcon2" },
344+ ];
345+ }
346+
347+ function test_create_appointmentMenu(data) {
348+ menuData.type = "com.canonical.indicator.appointment";
349+ menuData.label = data.label;
350+ menuData.sensitive = data.enabled;
351+ menuData.icon = data.icon;
352+
353+ loader.data = menuData;
354+ loader.sourceComponent = factory.load(menuData);
355+ tryCompareFunction(function() { return loader.item != undefined; }, true);
356+ compare(loader.item.objectName, "appointmentMenu", "Should have created a appointment menu");
357+
358+ compare(loader.item.text, data.label, "Label does not match data");
359+ compare(loader.item.iconSource, data.icon, "Icon does not match data");
360+ compare(loader.item.enabled, data.enabled, "Enabled does not match data");
361+ }
362+
281363 function test_create_wifiSection_data() {
282364 return [
283365 {label: "testLabel1", busy: false },
@@ -322,7 +404,7 @@ Item {
322404 tryCompareFunction(function() { return loader.item != undefined; }, true);
323405 compare(loader.item.objectName, "accessPoint", "Should have created a access point menu");
324406
325− compare(loader.item.label, data.label, "Label does not match data");
407+ compare(loader.item.text, data.label, "Label does not match data");
326408 compare(loader.item.strengthAction.name, "action::strength", "Strength action incorrect");
327409 compare(loader.item.secure, data.secure, "Secure does not match data");
328410 compare(loader.item.adHoc, data.adHoc, "AdHoc does not match data");
@@ -341,8 +423,8 @@ Item {
341423
342424 function test_create_groupedMessage_data() {
343425 return [
344− {label: "testLabel1", enabled: true, count: "5", appIcon: "file:///testIcon" },
345− {label: "testLabel2", enabled: false, count: "10", appIcon: "file:///testIcon2" },
426+ {label: "testLabel1", enabled: true, count: "5", icon: "file:///testIcon" },
427+ {label: "testLabel2", enabled: false, count: "10", icon: "file:///testIcon2" },
346428 ];
347429 }
348430
@@ -350,8 +432,8 @@ Item {
350432 menuData.type = "com.canonical.indicator.messages.sourceitem";
351433 menuData.label = data.label;
352434 menuData.sensitive = data.enabled;
353− menuData.icon = data.appIcon;
354− menuData.ext = { 'icon': data.appIcon };
435+ menuData.icon = data.icon;
436+ menuData.ext = { 'icon': data.icon };
355437 menuData.actionState = [data.count];
356438 menuData.isToggled = true;
357439
@@ -360,9 +442,103 @@ Item {
360442 tryCompareFunction(function() { return loader.item != undefined; }, true);
361443 compare(loader.item.objectName, "groupedMessage", "Should have created a group message menu");
362444
363− compare(loader.item.title, data.label, "Label does not match data");
445+ compare(loader.item.text, data.label, "Label does not match data");
364446 compare(loader.item.count, data.count, "Count does not match data");
365− compare(loader.item.appIcon, data.appIcon, "App Icon does not match data");
447+ compare(loader.item.iconSource, data.icon, "Icon does not match data");
448+ compare(loader.item.enabled, data.enabled, "Enabled does not match data");
449+ }
450+
451+ function test_create_mediaPayerMenu_data() {
452+ return [{
453+ label: "player1",
454+ icon: "file:://icon1",
455+ albumArt: "file:://art1",
456+ song: "song1",
457+ artist: "artist1",
458+ album: "album1",
459+ running: true,
460+ state: "Playing",
461+ enabled: true
462+ },{
463+ label: "player2",
464+ icon: "file:://icon2",
465+ albumArt: "file:://art2",
466+ song: "song2",
467+ artist: "artist2",
468+ album: "album2",
469+ running: false,
470+ state: "Paused",
471+ enabled: false
472+ }
473+ ];
474+ }
475+
476+ function test_create_mediaPayerMenu(data) {
477+ menuData.type = "com.canonical.unity.media-player";
478+ menuData.label = data.label;
479+ menuData.sensitive = data.enabled;
480+ menuData.icon = data.icon;
481+ menuData.actionState = {
482+ 'art-url': data.albumArt,
483+ 'title': data.song,
484+ 'artist': data.artist,
485+ 'album': data.album,
486+ 'running': data.running,
487+ 'state': data.state,
488+ };
489+
490+ loader.data = menuData;
491+ loader.sourceComponent = factory.load(menuData);
492+ tryCompareFunction(function() { return loader.item != undefined; }, true);
493+ compare(loader.item.objectName, "mediaPayerMenu", "Should have created a media player menu");
494+
495+ compare(loader.item.playerIcon, data.icon, "Album art does not match data");
496+ compare(loader.item.playerName, data.label, "Album art does not match data");
497+ compare(loader.item.albumArt, data.albumArt, "Album art does not match data");
498+ compare(loader.item.song, data.song, "Song does not match data");
499+ compare(loader.item.artist, data.artist, "Artist does not match data");
500+ compare(loader.item.album, data.album, "Album does not match data");
501+ compare(loader.item.running, data.running, "Running does not match data");
502+ compare(loader.item.state, data.state, "State does not match data");
503+ compare(loader.item.enabled, data.enabled, "Enabled does not match data");
504+ }
505+
506+ function test_create_playbackItemMenu_data() {
507+ return [{
508+ playAction: "action::play",
509+ nextAction: "action::next",
510+ previousAction: "action::previous",
511+ enabled: true
512+ },{
513+ playAction: "action::play2",
514+ nextAction: "action::next2",
515+ previousAction: "action::previous2",
516+ enabled: false
517+ }
518+ ];
519+ }
520+
521+ function test_create_playbackItemMenu(data) {
522+ menuData.type = "com.canonical.unity.playback-item";
523+ menuData.sensitive = data.enabled;
524+ menuData.ext = {
525+ 'xCanonicalPlayAction': data.playAction,
526+ 'xCanonicalNextAction': data.nextAction,
527+ 'xCanonicalPreviousAction': data.previousAction
528+ };
529+
530+ loader.data = menuData;
531+ loader.sourceComponent = factory.load(menuData);
532+ tryCompareFunction(function() { return loader.item != undefined; }, true);
533+ compare(loader.item.objectName, "playbackItemMenu", "Should have created a playback menu");
534+
535+ compare(loader.item.playing, false, "Playing does not match data");
536+ compare(loader.item.playAction.name, data.playAction, "Play action incorrect");
537+ compare(loader.item.nextAction.name, data.nextAction, "Next action incorrect");
538+ compare(loader.item.previousAction.name, data.previousAction, "Previous action incorrect");
539+ compare(loader.item.canPlay, false, "CanPlay should be false");
540+ compare(loader.item.canGoNext, false, "CanGoNext should be false");
541+ compare(loader.item.canGoPrevious, false, "CanGoPrevious should be false");
366542 compare(loader.item.enabled, data.enabled, "Enabled does not match data");
367543 }
368544 }