From 5fbb72521ce727cd615b69f64a1b10fb226ab833 Mon Sep 17 00:00:00 2001 From: Ken Murchison Date: Wed, 7 Aug 2019 09:09:59 -0400 Subject: regression.c: added test_icalcomponent_normalize() --- src/test/regression.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) 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) -- cgit v1.2.1