@@ -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 }
@@ -833,5 +837,33 @@ Item {
833837 compare(loader.item.checked, true, "Clicking switch menu should toggle check");
834838 tryCompare(loader.item, "checked", false);
835839 }
840+
841+ function test_create_calendar_data() {
842+ return [
843+ { calendarDay: new Date(), showWeekNumbers: false, eventDays: new Array() },
844+ { calendarDay: new Date(2016, 8), showWeekNumbers: true, eventDays: [31] },
845+ { calendarDay: new Date(), showWeekNumbers: false, eventDays: [1, 5, 10] },
846+ ];
847+ }
848+
849+ function test_create_calendar(data) {
850+ menuData.type = "com.canonical.indicator.calendar";
851+ menuData.actionState = {
852+ "calendar-day": data.calendarDay.getTime() / 1000 | 0,
853+ "show-week-numbers": data.showWeekNumbers,
854+ "appointment-days": data.eventDays
855+ }
856+
857+ loader.data = menuData;
858+ loader.sourceComponent = factory.load(menuData);
859+ tryCompareFunction(function() { return loader.item != undefined; }, true);
860+ compare(loader.item.objectName, "calendarMenu", "Should have created a calendar menu")
861+
862+ compare(loader.item.currentDate.getFullYear(), data.calendarDay.getFullYear(), "Calendar year does not match data")
863+ compare(loader.item.currentDate.getMonth(), data.calendarDay.getMonth(), "Calendar month does not match data")
864+ compare(loader.item.currentDate.getDay(), data.calendarDay.getDay(), "Calendar day does not match data")
865+ compare(loader.item.showWeekNumbers, data.showWeekNumbers, "Week numbers visibility does not match data")
866+ compare(loader.item.eventDays, data.eventDays, "Event days do not match data")
867+ }
836868 }
837869}