diff options
Diffstat (limited to 'comm/calendar/test/unit/test_freebusy.js')
-rw-r--r-- | comm/calendar/test/unit/test_freebusy.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/comm/calendar/test/unit/test_freebusy.js b/comm/calendar/test/unit/test_freebusy.js new file mode 100644 index 0000000000..73ac60fb3d --- /dev/null +++ b/comm/calendar/test/unit/test_freebusy.js @@ -0,0 +1,88 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +function run_test() { + do_calendar_startup(really_run_test); +} + +function really_run_test() { + test_freebusy(); + test_period(); +} + +function test_freebusy() { + let icsService = Cc["@mozilla.org/calendar/ics-service;1"].getService(Ci.calIICSService); + + // Bug 415987 - FREEBUSY decoding does not support comma-separated entries + // (https://bugzilla.mozilla.org/show_bug.cgi?id=415987) + let fbVal1 = "20080206T160000Z/PT1H"; + let fbVal2 = "20080206T180000Z/PT1H"; + let fbVal3 = "20080206T220000Z/PT1H"; + let data = + "BEGIN:VCALENDAR\n" + + "BEGIN:VFREEBUSY\n" + + "FREEBUSY;FBTYPE=BUSY:" + + fbVal1 + + "," + + fbVal2 + + "," + + fbVal3 + + "\n" + + "END:VFREEBUSY\n" + + "END:VCALENDAR\n"; + let fbComp = icsService.parseICS(data).getFirstSubcomponent("VFREEBUSY"); + equal(fbComp.getFirstProperty("FREEBUSY").value, fbVal1); + equal(fbComp.getNextProperty("FREEBUSY").value, fbVal2); + equal(fbComp.getNextProperty("FREEBUSY").value, fbVal3); +} + +function test_period() { + let period = Cc["@mozilla.org/calendar/period;1"].createInstance(Ci.calIPeriod); + + period.start = cal.createDateTime("20120101T010101"); + period.end = cal.createDateTime("20120101T010102"); + + equal(period.icalString, "20120101T010101/20120101T010102"); + equal(period.duration.icalString, "PT1S"); + + period.icalString = "20120101T010103/20120101T010104"; + + equal(period.start.icalString, "20120101T010103"); + equal(period.end.icalString, "20120101T010104"); + equal(period.duration.icalString, "PT1S"); + + period.icalString = "20120101T010105/PT1S"; + equal(period.start.icalString, "20120101T010105"); + equal(period.end.icalString, "20120101T010106"); + equal(period.duration.icalString, "PT1S"); + + period.makeImmutable(); + // ical.js doesn't support immutability yet + // throws( + // () => { + // period.start = cal.createDateTime("20120202T020202"); + // }, + // /0x80460002/, + // "Object is Immutable" + // ); + // throws( + // () => { + // period.end = cal.createDateTime("20120202T020202"); + // }, + // /0x80460002/, + // "Object is Immutable" + // ); + + let copy = period.clone(); + equal(copy.start.icalString, "20120101T010105"); + equal(copy.end.icalString, "20120101T010106"); + equal(copy.duration.icalString, "PT1S"); + + copy.start.icalString = "20120101T010106"; + copy.end = cal.createDateTime("20120101T010107"); + + equal(period.start.icalString, "20120101T010105"); + equal(period.end.icalString, "20120101T010106"); + equal(period.duration.icalString, "PT1S"); +} |