diff options
author | Hans Petter <hansp@src.gnome.org> | 2003-09-12 06:04:44 +0800 |
---|---|---|
committer | Hans Petter <hansp@src.gnome.org> | 2003-09-12 06:04:44 +0800 |
commit | 697761cc337aa77a47140c8df50ed84bc25e23f6 (patch) | |
tree | b785830f72e9938cceaa016a419c7b6d9892bada /libical/src/test/regression-utils.c | |
parent | 733d77e657516f9a59b5c1a7b62acb87b03ec86f (diff) | |
download | gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.gz gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.bz2 gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.lz gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.xz gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.tar.zst gsoc2013-evolution-697761cc337aa77a47140c8df50ed84bc25e23f6.zip |
Import new libical from mainline HEAD and make appropriate changes to
Evolution.
svn path=/trunk/; revision=22538
Diffstat (limited to 'libical/src/test/regression-utils.c')
-rw-r--r-- | libical/src/test/regression-utils.c | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/libical/src/test/regression-utils.c b/libical/src/test/regression-utils.c new file mode 100644 index 0000000000..edc1eddba3 --- /dev/null +++ b/libical/src/test/regression-utils.c @@ -0,0 +1,169 @@ +#include "ical.h" + +#include <stdlib.h> /* abort() */ +#include <string.h> /* strcmp() */ + +static char ictt_str[1024]; +int VERBOSE = 0; +int QUIET = 0; + +const char* ical_timet_string(const time_t t) +{ + struct tm stm = *(gmtime(&t)); + + sprintf(ictt_str,"%02d-%02d-%02d %02d:%02d:%02d Z",stm.tm_year+1900, + stm.tm_mon+1,stm.tm_mday,stm.tm_hour,stm.tm_min,stm.tm_sec); + + return ictt_str; + +} + +const char* ictt_as_string(struct icaltimetype t) +{ + const char *zone = icaltimezone_get_tzid((icaltimezone *)t.zone); + + if (icaltime_is_utc(t)) + sprintf(ictt_str,"%02d-%02d-%02d %02d:%02d:%02d Z UTC", + t.year,t.month,t.day, t.hour,t.minute,t.second); + else + sprintf(ictt_str,"%02d-%02d-%02d %02d:%02d:%02d %s", + t.year,t.month,t.day, t.hour,t.minute,t.second, + zone == NULL? "(floating)": zone); + + return ictt_str; +} + +char* icaltime_as_ctime(struct icaltimetype t) +{ + time_t tt; + + tt = icaltime_as_timet(t); + sprintf(ictt_str,"%s",ctime(&tt)); + + return ictt_str; +} + + +/** This variable is used to control whether we core dump on errors **/ +static int die_on_errors = 0; +static int testnumber = 0; +static int failed = 0; +static int current_set = 0; + +static struct {int set; int test;} failed_tests[1024]; + +void die_on_errors_set(int val) { + die_on_errors = 1; +} + +void _ok(char* test_name, int success, char *file, int linenum, char *test) { + testnumber++; + + if (!QUIET || (QUIET && !success)) + printf("%sok %d - %s\n", (success)?"" : "not ", testnumber, test_name); + if (!success) { + failed_tests[failed].set = current_set; + failed_tests[failed].test = testnumber; + failed++; + + printf("# test failed: \"%s\"\n", test); + printf("# at: %s:%-d\n", file, linenum); + } + + if (die_on_errors == 1 && !success) { + abort(); + } +} + +void _is(char* test_name, const char* str1, const char* str2, char *file, int linenum) { + int diff; + + if (str1 == NULL || str2 == NULL) { + diff = 1; + } else { + diff = strcmp(str1, str2); + } + + if (!test_name) test_name = "()"; + + _ok(test_name, (diff==0), file, linenum, ""); + + if (diff) { + printf("# got: %s\n", str1 ? str1 : "(null)"); + printf("# expected: %s\n", str2 ? str2 : "(null)"); + } +} + +void _int_is(char* test_name, int i1, int i2, char *file, int linenum) { + _ok(test_name, (i1==i2), file, linenum, ""); + + if (i1!=i2) { + printf("# got: %d\n", i1); + printf("# expected: %d\n", i2); + } +} + + +void verbose(int newval) { + VERBOSE = newval; +} + +void test_start(int numtests) { + if (numtests) { + if (!QUIET) + printf("1..%-d\n", numtests); + } else { + if (!QUIET) + printf("1..\n"); + } +} + +void test_header(char *header, int set) { + if (!QUIET) + printf("########## %-40s (%d) ##########\n", header, set); + current_set = set; +} + +void test_end(void) { + int pct; + + if (failed) { + int i, oldset = 0; + + pct = ((testnumber - failed)*100)/testnumber; + printf("\n Failed %d/%d tests, %2d%% okay\n", failed, testnumber, pct); + printf("\n Failed tests:\n "); + for (i = 0; i < failed; i++) { + int this_set = failed_tests[i].set; + char *prefix = ""; + if (this_set != oldset) { + prefix = "\n "; + oldset = this_set; + } + + printf("%s%d/%d ", prefix, this_set, failed_tests[i].test); + } + printf("\n"); + + } else { + printf("\n All Tests Successful.\n"); + } +} + + +void test_run(char *test_name, + void (*test_fcn)(void), + int do_test, int headeronly) +{ + static int test_set = 1; + + if (headeronly || do_test == 0 || do_test == test_set) + test_header(test_name, test_set); + + if (!headeronly && (do_test==0 || do_test == test_set)) { + (*test_fcn)(); + if (!QUIET) + printf("\n"); + } + test_set++; +} |