summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Murchison <murch@fastmail.com>2019-08-07 09:09:59 -0400
committerAllen Winter <allen.winter@kdab.com>2019-08-10 12:22:00 -0400
commit5fbb72521ce727cd615b69f64a1b10fb226ab833 (patch)
tree950f74cf79d7a47fa9c151f55895ac8f0db0ef26
parentbfdb2da7100087b75fbde502a4dd84fa330af83d (diff)
downloadlibical-git-5fbb72521ce727cd615b69f64a1b10fb226ab833.tar.gz
regression.c: added test_icalcomponent_normalize()
-rw-r--r--src/test/regression.c111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/test/regression.c b/src/test/regression.c
index a21eed2e..a7b6e5cf 100644
--- a/src/test/regression.c
+++ b/src/test/regression.c
@@ -4403,6 +4403,113 @@ void test_icalvalue_decode_ical_string(void)
ok("Properly decoded", (strcmp(buff, "a\\") == 0));
}
+static int test_icalarray_sort_compare_char(const void* p1, const void* p2) {
+
+ char c1 = *((char*)p1);
+ char c2 = *((char*)p2);
+
+ return (c1 < c2) ? -1 : ((c1 > c2) ? 1 : 0);
+}
+
+void test_icalarray_sort(void)
+{
+ /* this test is based on the work from the PDCLib project */
+
+ char presort[] = { "shreicnyjqpvozxmbt" };
+ char sorted1[] = { "bcehijmnopqrstvxyz" };
+ unsigned int i;
+
+ icalarray * array = icalarray_new(1, 2);
+
+ for (i = 0; i < sizeof(presort)-1; i++) {
+ icalarray_append(array, &presort[i]);
+ }
+
+ icalarray_sort(array, test_icalarray_sort_compare_char);
+
+ for (i = 0; i < sizeof(presort)-1; i++) {
+ void* pItem = icalarray_element_at(array, i);
+ char c = *((char*)pItem);
+ ok("icalarray_sort - item sorted as expected", c == sorted1[i]);
+ }
+
+ icalarray_free(array);
+}
+
+void test_icalcomponent_normalize(void)
+{
+ const char *calStr1 =
+ "BEGIN:VCALENDAR\n"
+ "PRODID:-//ACME//NONSGML ACME Calendar//EN\n"
+ "VERSION:2.0\n"
+ "CALSCALE:GREGORIAN\n"
+ "BEGIN:VTIMEZONE\n"
+ "TZID:America/New_York\n"
+ "BEGIN:DAYLIGHT\n"
+ "TZNAME:EDT\n"
+ "TZOFFSETFROM:-0500\n"
+ "TZOFFSETTO:-0400\n"
+ "DTSTART:20070311T020000\n"
+ "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\n"
+ "END:DAYLIGHT\n"
+ "BEGIN:STANDARD\n"
+ "TZNAME:EST\n"
+ "TZOFFSETFROM:-0400\n"
+ "TZOFFSETTO:-0500\n"
+ "DTSTART:20071104T020000\n"
+ "RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\n"
+ "END:STANDARD\n"
+ "END:VTIMEZONE\n"
+ "BEGIN:VEVENT\n"
+ "DTSTART;VALUE=DATE-TIME:20180220T020000Z\n"
+ "DURATION:PT1H\n"
+ "END:VEVENT\n"
+ "END:VCALENDAR\n";
+ const char *calStr2 =
+ "BEGIN:VCALENDAR\n"
+ "VERSION:2.0\n"
+ "PRODID:-//ACME//NONSGML ACME Calendar//EN\n"
+ "BEGIN:VEVENT\n"
+ "TRANSP:OPAQUE\n"
+ "DURATION:PT1H\n"
+ "DTSTART;VALUE=DATE-TIME:20180220T020000Z\n"
+ "END:VEVENT\n"
+ "BEGIN:VTIMEZONE\n"
+ "TZID:America/New_York\n"
+ "BEGIN:STANDARD\n"
+ "TZNAME:EST\n"
+ "TZOFFSETFROM:-0400\n"
+ "TZOFFSETTO:-0500\n"
+ "DTSTART:20071104T020000\n"
+ "RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\n"
+ "END:STANDARD\n"
+ "BEGIN:DAYLIGHT\n"
+ "TZNAME:EDT\n"
+ "TZOFFSETFROM:-0500\n"
+ "TZOFFSETTO:-0400\n"
+ "DTSTART:20070311T020000\n"
+ "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\n"
+ "END:DAYLIGHT\n"
+ "END:VTIMEZONE\n"
+ "END:VCALENDAR\n";
+
+ icalcomponent *ical1 = icalcomponent_new_from_string(calStr1);
+ icalcomponent *ical2 = icalcomponent_new_from_string(calStr2);
+
+ icalcomponent_normalize(ical1);
+ icalcomponent_normalize(ical2);
+
+ calStr1 = icalcomponent_as_ical_string(ical1);
+ calStr2 = icalcomponent_as_ical_string(ical2);
+
+ if (VERBOSE) {
+ printf("iCal1:\n%s\n\n", calStr1);
+ printf("iCal2:\n%s\n\n", calStr2);
+ }
+
+ str_is("Normalized components match", calStr1, calStr2);
+}
+
int main(int argc, char *argv[])
{
#if !defined(HAVE_UNISTD_H)
@@ -4538,6 +4645,10 @@ int main(int argc, char *argv[])
test_run("Test timezone from builtin", test_timezone_from_builtin, do_test, do_header);
test_run("Test icalvalue_decode_ical_string", test_icalvalue_decode_ical_string, do_test, do_header);
+ test_run("Test icalarray_sort", test_icalarray_sort, do_test, do_header);
+
+ test_run("Test icalcomponent_normalize", test_icalcomponent_normalize, do_test, do_header);
+
/** OPTIONAL TESTS go here... **/
#if defined(WITH_CXX_BINDINGS)