diff options
Diffstat (limited to 'camel/tests')
-rw-r--r-- | camel/tests/README | 4 | ||||
-rwxr-xr-x | camel/tests/data/getaddr.pl | 32 | ||||
-rw-r--r-- | camel/tests/lib/address-data.h | 93 | ||||
-rw-r--r-- | camel/tests/lib/camel-test.c | 6 | ||||
-rw-r--r-- | camel/tests/message/test2.c | 78 |
5 files changed, 166 insertions, 47 deletions
diff --git a/camel/tests/README b/camel/tests/README index e9262541b4..2ffcc2dbcc 100644 --- a/camel/tests/README +++ b/camel/tests/README @@ -33,6 +33,8 @@ code has known limitations currently that stop it passing, but otherwise works for nominal input. To debug tests, set a breakpoint on camel_test_fail, which will be -called for any failure, even a non-fatal one. +called for any failure, even a non-fatal one. Or set it to +camel_test_break, which will only be called for fatal errors which are +to print to the screen. Michael <notzed@helixcode.com> diff --git a/camel/tests/data/getaddr.pl b/camel/tests/data/getaddr.pl new file mode 100755 index 0000000000..74a8a81f74 --- /dev/null +++ b/camel/tests/data/getaddr.pl @@ -0,0 +1,32 @@ +#!/usr/bin/perl + +# get addresses out of messages + +if ($#ARGV < 0) { + print "Usage: $0 message(s) mbox(es)\n"; + exit 1; +} + +foreach $name (@ARGV) { + open IN,"<$name"; + while (<IN>) { + if (/^From: (.*)/i + || /^To: (.*)/i + || /^Cc: (.*)/i) { + $base = $1; + while (<IN>) { + if (/^\s+(.*)/) { + $base .= " ".$1; + } else { + last; + } + } + $uniq{$base} = 1; + } + } + close IN; +} + +foreach $key (sort keys %uniq) { + print $key."\n"; +} diff --git a/camel/tests/lib/address-data.h b/camel/tests/lib/address-data.h new file mode 100644 index 0000000000..acecac596a --- /dev/null +++ b/camel/tests/lib/address-data.h @@ -0,0 +1,93 @@ +/* BE WARY of editing this file with emacs. + Otherwise it might be smart and try to re-encode everything, which + you really do not want +*/ + +static struct _a { + int count; + char *addr; + char *utf8; /* the utf8 in this table was generated by camel itself. As a result i'm making the assumption it + was right when it was created. It also depends on the format of ::format(),. which is likely to + change, to handle other bugs ! */ +} test_address[] = { + { 1, "\"=?ISO-8859-1?Q?David_Guti=E9rrez_Magallanes?=\" <david@iiia.csic.es>", "David Gutiérrez Magallanes <david@iiia.csic.es>" }, + { 1, "\"=?iso-8859-1?Q?Jos=E9?= Antonio Milke G.\" <gerencia@ovoplus.com>", "José Antonio Milke G. <gerencia@ovoplus.com>" }, + { 1, "\"=?iso-8859-2?Q?Hi-Fi_Internert_market_=3D_1.Virtu=E1ln=ED_Internetov=E9_H?= =?iso-8859-2?Q?i-Fi_Studio?=\" <hifimarket@atlas.cz>", "Hi-Fi Internert market = 1.Virtuální Internetové Hi-Fi Studio <hifimarket@atlas.cz>" }, + { 3, "\"James M. Cape\" <jcape@jcinteractive.com>, =?iso-8859-1?Q?Joaqu=EDn_Cuenca_Abela?= <cuenca@ie2.u-psud.fr>, gnome-hackers@nuclecu.unam.mx", "James M. Cape <jcape@jcinteractive.com>, Joaquín Cuenca Abela <cuenca@ie2.u-psud.fr>, gnome-hackers@nuclecu.unam.mx" }, + { 1, "=?ISO-8859-1?Q?David_Guti=E9rrez_Magallanes?= <david@iiia.csic.es>", "David Gutiérrez Magallanes <david@iiia.csic.es>" }, + { 1, "=?ISO-8859-2?Q?Tomasz_K=B3oczko?= <kloczek@rudy.mif.pg.gda.pl>", "Tomasz Kłoczko <kloczek@rudy.mif.pg.gda.pl>" }, + { 1, "=?ISO-8859-2?Q?Vladim=EDr_Solnick=FD?= <vs@utia.cas.cz>", "Vladimír Solnický <vs@utia.cas.cz>" }, + { 1, "=?iso-8859-1?Q?=22S=F6rensen=2C_Daniel=22?= <dasar@wmdata.com>", "\"Sörensen, Daniel\" <dasar@wmdata.com>" }, + { 1, "=?iso-8859-1?Q?=C1=C2=AAQ=A7=CA?= <dennys@iim.nctu.edu.tw>", "ÁªQ§Ê <dennys@iim.nctu.edu.tw>" }, + { 1, "=?iso-8859-1?Q?=C1=C2=AAQ=A7=CA?= <dennys@news.iim.nctu.edu.tw>", "ÁªQ§Ê <dennys@news.iim.nctu.edu.tw>" }, + { 1, "=?iso-8859-1?Q?=C1kos?= Valentinyi <A.Valentinyi@soton.ac.uk>", "Ákos Valentinyi <A.Valentinyi@soton.ac.uk>" }, + { 1, "=?iso-8859-1?Q?Joaqu=EDn?= Cuenca Abela <cuenca@ie2.u-psud.fr>", "Joaquín Cuenca Abela <cuenca@ie2.u-psud.fr>" }, + { 2, "=?iso-8859-1?Q?Joaqu=EDn?= Cuenca Abela <cuenca@ie2.u-psud.fr>, gnome-hackers@nuclecu.unam.mx", "Joaquín Cuenca Abela <cuenca@ie2.u-psud.fr>, gnome-hackers@nuclecu.unam.mx" }, + { 1, "=?iso-8859-1?Q?Joaqu=EDn_Cuenca_Abela?= <cuenca@celium.net>", "Joaquín Cuenca Abela <cuenca@celium.net>" }, + { 1, "=?iso-8859-1?Q?Juantom=E1s=20Garc=EDa?= <juantomas@lared.es>", "Juantomás García <juantomas@lared.es>" }, + { 1, "=?iso-8859-1?Q?Kenneth_ll=E9phaane_Christiansen?= <kenneth@ripen.dk>", "Kenneth lléphaane Christiansen <kenneth@ripen.dk>" }, + { 1, "=?iso-8859-1?Q?Kjell_Tage_=D8hman?= <tage@ohman.no>", "Kjell Tage Øhman <tage@ohman.no>" }, + { 1, "=?iso-8859-1?Q?Martin_Norb=E4ck?= <d95mback@dtek.chalmers.se>", "Martin Norbäck <d95mback@dtek.chalmers.se>" }, + { 1, "=?iso-8859-1?Q?P=E5llen?= <pollen@astrakan.hig.se>", "Pållen <pollen@astrakan.hig.se>" }, + { 1, "=?iso-8859-1?Q?Ville_P=E4tsi?= <drc@gnu.org>", "Ville Pätsi <drc@gnu.org>" }, + { 1, "=?iso-8859-1?q?Joaqu=EDn?= Cuenca Abela <cuenca@celium.net>", "Joaquín Cuenca Abela <cuenca@celium.net>" }, + { 1, "=?iso-8859-2?Q?Dra=BEen_Ka=E8ar?= <dave@srce.hr>", "Dražen Kačar <dave@srce.hr>" }, + /* yep this is right, this isn't valid so doesn't decode at all */ + { 1, "=?windows-1250?Q? \"Jaka Mo=E8nik\" ?= <jaka.mocnik@kiss.uni-lj.si>", "=?windows-1250?Q? Jaka Mo=E8nik ?= <jaka.mocnik@kiss.uni-lj.si>" }, + { 3, "George <jirka@5z.com>, Juantomas =?ISO-8859-1?Q?Garc=C3=83=C2=ADa?= <juantomas@lared.es>, gnome-hackers@gnome.org", "George <jirka@5z.com>, Juantomas GarcÃÂa <juantomas@lared.es>, gnome-hackers@gnome.org" }, + { 7, "Jon Trowbridge <trow@emccta.com>, gnome-1.4-list@gnome.org, gnome-devel-list@gnome.org, gnome-hackers@gnome.org, Dom Lachowicz <cinamod@hotmail.com>, =?iso-8859-1?Q?Joaqu=EDn_Cuenca_Abela?= <cuenca@celium.net>, sam th <sam@uchicago.edu>", "Jon Trowbridge <trow@emccta.com>, gnome-1.4-list@gnome.org, gnome-devel-list@gnome.org, gnome-hackers@gnome.org, Dom Lachowicz <cinamod@hotmail.com>, Joaquín Cuenca Abela <cuenca@celium.net>, sam th <sam@uchicago.edu>" }, + { 6, "Jon Trowbridge <trow@emccta.com>, gnome-1.4-list@gnome.org, gnome-devel-list@gnome.org, gnome-hackers@gnome.org, Dom Lachowicz <cinamod@hotmail.com>, =?iso-8859-1?Q?Joaqu=EDn_Cuenca_Abela?= <cuenca@ie2.u-psud.fr>", "Jon Trowbridge <trow@emccta.com>, gnome-1.4-list@gnome.org, gnome-devel-list@gnome.org, gnome-hackers@gnome.org, Dom Lachowicz <cinamod@hotmail.com>, Joaquín Cuenca Abela <cuenca@ie2.u-psud.fr>" }, + { 1, "Kai =?iso-8859-1?Q?Gro=DFjohann?= <Kai.Grossjohann@CS.Uni-Dortmund.DE>", "Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>" }, + { 1, "Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai =?iso-8859-1?q?Gro=DFjohann?=)", "Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>" }, + { 1, "Rickard =?iso-8859-1?Q?Nordstr=F6m?= <rzi@ebox.tninet.se>", "Rickard Nordström <rzi@ebox.tninet.se>" }, + { 1, "Tomasz =?iso-8859-2?q?K=B3oczko?= <kloczek@rudy.mif.pg.gda.pl>", "Tomasz Kłoczko <kloczek@rudy.mif.pg.gda.pl>" }, + { 1, "VALCKE =?iso-8859-1?Q?C=E9dric?= <cvalcke@freesurf.fr>", "VALCKE Cédric <cvalcke@freesurf.fr>" }, + { 1, "Ville =?iso-8859-1?q?P=E4tsi?= <drc@gnu.org>", "Ville Pätsi <drc@gnu.org>" }, + { 1, "david@iiia.csic.es (=?ISO-8859-1?Q?David_Guti=E9rrez_Magallanes?=)", "David Gutiérrez Magallanes <david@iiia.csic.es>" }, + { 1, "kloczek@rudy.mif.pg.gda.pl (=?ISO-8859-2?Q?Tomasz_K=B3oczko?=)", "Tomasz Kłoczko <kloczek@rudy.mif.pg.gda.pl>" }, + { 1, "lassehp@imv.aau.dk (Lasse =?ISO-8859-1?Q?Hiller=F8e?= Petersen)", "Lasse Hillerøe Petersen <lassehp@imv.aau.dk>" }, + { 1, "ysato@etl.go.jp (Yutaka Sato =?ISO-2022-JP?B?GyRAOjRGI0stGyhK?=)", "Yutaka Sato 佐藤豊 <ysato@etl.go.jp>" }, +}; + +static struct _l { + char *type; + char *line; +} test_lines[] = { + /* commented out unsupported charsets - FIXME: camel should somehow handle this, although it can't really of course */ + /*{ "windows-1251", " .\n ?" },*/ + { "iso-8859-1", "Omple les miniatures de la finestra amb contingut de la pantalla" }, + { "ISO-8859-2", "Sprvce oken hbe s okrajem okna\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, + { "ISO-8859-1", "Vindueshndtering flytter dekorationsvindue istedet\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, + { "ISO-8859-1", "Vorschaubilder der Fenster mit dem Bildschirminhalt ausfllen" }, + { "iso-8859-7", " (-)" }, + { "iso-8859-1", "You've chosen to disable the startup hint.\nTo re-enable it, choose \"Startup Hint\"\nin the GNOME Control Centre" }, + { "iso-8859-1", "El aplique de reloj muestra en su panel la fecha y la hora de forma simple \ny ligero " }, + { "iso-8859-1", "Applet ei vasta salvestusksule.\nKas peaks ta niisama sulgema, vi veel ootama?" }, + { "iso-8859-1", "Lehio kudeatzaileak lehioaren dekorazaioa mugiarazten\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, + { "iso-8859-15", "Nyt sovellukset, joiden ikkunoista on nkyvill vain otsikkopalkki" }, + { "ISO-8859-1", "Afficher les tches qui ne sont pas dans la liste des fentres" }, + { "iso-8859-1", "Nl applet ag tabhair freagra ar iarratas sbhil.\nBain amach an applet n lean ar fnacht?" }, + { "iso-8859-1", "Amosa-las tarefas agochadas da lista de fiestras (SKIP-WINLIST)" }, + { "iso-8859-2", "Az ablakkezel a dekorcit mozgassa az ablak helyett\n(AfterStep, Enlightenment, FVWM, IceWM, SawMill)" }, + { "iso-8859-1", "Riempi la finestra delle anteprime con il contenuto dello schermo" }, + { "euc-jp", "ɥޥ͡Ͼꥦɥư\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, + { "euc-kr", "â ڰ ٹ â ̵\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, + { "iso-8859-13", "Priedas neatsakinja praym isisaugoti.\nPaalinti pried ar laukti toliau?" }, + { "iso-8859-1", "Window manager verplaatst dekoratie\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, + { "iso-8859-1", "Vindushndtereren flytter dekorasjonsvinduet i stedet\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, + { "iso-8859-2", "Przemieszczanie dekoracji zamiast okna\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, + { "iso-8859-1", "Este programa responsvel por executar outras aplicaes, embeber pequenos applets, a paz no mundo e crashes aleatrios do X." }, + { "iso-8859-1", "Mostrar tarefas que se escondem da lista de janelas (SKIP-WINLIST)" }, + { "koi8-r", " " }, + { "iso-8859-2", "Sprvca okien presva okraje okien\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, + { "iso-8859-2", "Kai posle, ki se skrivajo pred upravljalnik oken (SKIP-WINLIST)" }, + { "iso-8859-5", "Window a\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, + { "iso-8859-2", "Window menadzeri pomera dekoracioni prozor umesto toga\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, + { "iso-8859-1", "Fnsterhanteraren flyttar dekorationsfnstret istllet\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, + /*{ "TSCII", "츼- ¡ 츼 (츼--Ţ)" },*/ + { "iso-8859-9", "Kaydetme isteine bir uygulak cevap vermiyor .\nUygula sileyim mi , yoksa bekleyeyim mi ?" }, + { "koi8-u", "ͦ æ ͦ צ\n(AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, + { "iso-8859-1", "Cwand on scriftr est bodj fo, li scriftr t totes\nles apliketes dvins sont pierdowes. Bodj ci scriftr chal?" }, + { "gb2312", "ǨƵװδڹ(AfterStep, Enlightenment, FVWM, IceWM, SawMill)" }, + { "big5", "z̥uʸ˹\n(AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, +}; diff --git a/camel/tests/lib/camel-test.c b/camel/tests/lib/camel-test.c index a913ad78a4..6a1e00addb 100644 --- a/camel/tests/lib/camel-test.c +++ b/camel/tests/lib/camel-test.c @@ -116,6 +116,11 @@ void camel_test_pull(void) g_free(node); } +/* where to set breakpoints */ +void camel_test_break(void) +{ +} + void camel_test_fail(const char *why, ...) { va_list ap; @@ -135,6 +140,7 @@ void camel_test_failv(const char *why, va_list ap) if ((nonfatal == NULL && camel_test_verbose > 0) || (nonfatal && camel_test_verbose > 1)) { printf("Failed.\n%s\n", text); + camel_test_break(); } g_free(text); diff --git a/camel/tests/message/test2.c b/camel/tests/message/test2.c index 8a3fe3c250..00bd6aabf2 100644 --- a/camel/tests/message/test2.c +++ b/camel/tests/message/test2.c @@ -11,51 +11,7 @@ #include <camel/camel-internet-address.h> #include <camel/camel-address.h> -/* a bunch of test strings in different encodings, just taken from gnome-core po files */ -/* see data/genline.pl */ -struct _l { - char *type; - char *line; -} test_lines[] = { - /* FIXME: for now, remove the types libunicode doesn't know about, this is tricky to fix */ - /* And at best, all we could do is translate it to X-Unknown, or something */ - /*{ "windows-1251", " .\n ?" },*/ - { "iso-8859-1", "Omple les miniatures de la finestra amb contingut de la pantalla" }, - { "ISO-8859-2", "Sprvce oken hbe s okrajem okna (AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, - { "ISO-8859-1", "Vindueshndtering flytter dekorationsvindue istedet (AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, - { "ISO-8859-1", "Vorschaubilder der Fenster mit dem Bildschirminhalt ausfllen" }, - { "iso-8859-7", " (-)" }, - { "iso-8859-1", "You've chosen to disable the startup hint. To re-enable it, choose \"Startup Hint\" in the GNOME Control Centre" }, - { "iso-8859-1", "El aplique de reloj muestra en su panel la fecha y la hora de forma simple y ligero " }, - { "iso-8859-1", "Applet ei vasta salvestusksule. Kas peaks ta niisama sulgema, vi veel ootama?" }, - { "iso-8859-1", "Lehio kudeatzaileak lehioaren dekorazaioa mugiarazten (AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, - { "iso-8859-15", "Nyt sovellukset, joiden ikkunoista on nkyvill vain otsikkopalkki" }, - { "ISO-8859-1", "Afficher les tches qui ne sont pas dans la liste des fentres" }, - { "iso-8859-1", "Nl applet ag tabhair freagra ar iarratas sbhil. Bain amach an applet n lean ar fnacht?" }, - { "iso-8859-1", "Amosa-las tarefas agochadas da lista de fiestras (SKIP-WINLIST)" }, - { "iso-8859-2", "Az ablakkezel a dekorcit mozgassa az ablak helyett (AfterStep, Enlightenment, FVWM, IceWM, SawMill)" }, - { "iso-8859-1", "Riempi la finestra delle anteprime con il contenuto dello schermo" }, - { "euc-jp", "ɥޥ͡Ͼꥦɥư (AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, - { "euc-kr", "â ڰ ٹ â ̵ (AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, - { "iso-8859-13", "Priedas neatsakinja praym isisaugoti. Paalinti pried ar laukti toliau?" }, - { "iso-8859-1", "Window manager verplaatst dekoratie (AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, - { "iso-8859-1", "Vindushndtereren flytter dekorasjonsvinduet i stedet (AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, - { "iso-8859-2", "Przemieszczanie dekoracji zamiast okna (AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, - { "iso-8859-1", "Este programa responsvel por executar outras aplicaes, embeber pequenos applets, a paz no mundo e crashes aleatrios do X." }, - { "iso-8859-1", "Mostrar tarefas que se escondem da lista de janelas (SKIP-WINLIST)" }, - { "koi8-r", " " }, - { "iso-8859-2", "Sprvca okien presva okraje okien (AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, - { "iso-8859-2", "Kai posle, ki se skrivajo pred upravljalnik oken (SKIP-WINLIST)" }, - { "iso-8859-5", "Window a (AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, - { "iso-8859-2", "Window menadzeri pomera dekoracioni prozor umesto toga (AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, - { "iso-8859-1", "Fnsterhanteraren flyttar dekorationsfnstret istllet (AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, - /*{ "TSCII", "츼- ¡ 츼 (츼--Ţ)" },*/ - { "iso-8859-9", "Kaydetme isteine bir uygulak cevap vermiyor . Uygula sileyim mi , yoksa bekleyeyim mi ?" }, - { "koi8-u", "ͦ æ ͦ צ (AfterStep, Enlightenment, FVWM, IceWM, Sawfish)" }, - { "iso-8859-1", "Cwand on scriftr est bodj fo, li scriftr t totes les apliketes dvins sont pierdowes. Bodj ci scriftr chal?" }, - { "gb2312", "ǨƵװδڹ(AfterStep, Enlightenment, FVWM, IceWM, SawMill)" }, - { "big5", "z̥uʸ˹ (AfterStep, Enlightenment, FVWM, IceWM, Sawmill)" }, -}; +#include "address-data.h" static char *convert(const char *in, const char *from, const char *to) { @@ -330,8 +286,38 @@ int main(int argc, char **argv) camel_test_end(); - /* FIXME: Add test of decoding of externally defined addresses */ + camel_test_start("CamelInternetAddress, I18N decode"); + + for (i=0;i<ARRAY_LEN(test_address);i++) { + push("Testing address line %d '%s'", i, test_address[i].addr); + + addr = camel_internet_address_new(); + push("checking decoded"); + check(camel_address_decode(CAMEL_ADDRESS(addr), test_address[i].addr) == test_address[i].count); + format = camel_address_format(CAMEL_ADDRESS(addr)); + check(strcmp(format, test_address[i].utf8) == 0); + test_free(format); + pull(); + + push("Comparing re-encoded output"); + addr2 = CAMEL_INTERNET_ADDRESS(camel_internet_address_new()); + enc = camel_address_encode(CAMEL_ADDRESS(addr)); + check_msg(camel_address_decode(CAMEL_ADDRESS(addr2), enc) == test_address[i].count, "enc = '%s'", enc); + test_free(enc); + test_address_compare(addr, addr2); + check_unref(addr2, 1); + pull(); + + check_unref(addr, 1); + + pull(); + } + + camel_test_end(); + /* FIXME: Add test of decoding of broken addresses */ return 0; } + + |