@@ -80,9 +80,11 @@ Item {
8080 menuData.isCheck = false;
8181 menuData.isRadio = false;
8282 menuData.isToggled = false;
83+ }
8384
84− loader.sourceComponent = null;
85+ function cleanup() {
8586 loader.data = undefined;
87+ loader.sourceComponent = undefined;
8688
8789 verify(loader.item == null);
8890 }
@@ -116,6 +118,8 @@ Item {
116118 { tag: 'accesspoint', type: "unity.widgets.systemsettings.tablet.accesspoint", objectName: "accessPoint" },
117119 { tag: 'modeminfoitem', type: "com.canonical.indicator.network.modeminfoitem", objectName: "modemInfoItem" },
118120
121+ { tag: 'calendar', type: "com.canonical.indicator.calendar", objectName: "calendarMenu" },
122+
119123 { tag: 'unknown', type: "", objectName: "standardMenu"}
120124 ];
121125 }
@@ -812,5 +816,33 @@ Item {
812816 compare(loader.item.checked, true, "Clicking switch menu should toggle check");
813817 tryCompare(loader.item, "checked", false);
814818 }
819+
820+ function test_create_calendar_data() {
821+ return [
822+ { calendarDay: new Date(), showWeekNumbers: false, eventDays: new Array() },
823+ { calendarDay: new Date(2016, 8), showWeekNumbers: true, eventDays: [31] },
824+ { calendarDay: new Date(), showWeekNumbers: false, eventDays: [1, 5, 10] },
825+ ];
826+ }
827+
828+ function test_create_calendar(data) {
829+ menuData.type = "com.canonical.indicator.calendar";
830+ menuData.actionState = {
831+ "calendar-day": data.calendarDay.getTime() / 1000 | 0,
832+ "show-week-numbers": data.showWeekNumbers,
833+ "appointment-days": data.eventDays
834+ }
835+
836+ loader.data = menuData;
837+ loader.sourceComponent = factory.load(menuData);
838+ tryCompareFunction(function() { return loader.item != undefined; }, true);
839+ compare(loader.item.objectName, "calendarMenu", "Should have created a calendar menu")
840+
841+ compare(loader.item.currentDate.getFullYear(), data.calendarDay.getFullYear(), "Calendar year does not match data")
842+ compare(loader.item.currentDate.getMonth(), data.calendarDay.getMonth(), "Calendar month does not match data")
843+ compare(loader.item.currentDate.getDate(), data.calendarDay.getDate(), "Calendar day does not match data")
844+ compare(loader.item.showWeekNumbers, data.showWeekNumbers, "Week numbers visibility does not match data")
845+ compare(loader.item.eventDays, data.eventDays, "Event days do not match data")
846+ }
815847 }
816848}