This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/packages/clib/maildrop/rfc822/reftest.c
Vítor Santos Costa 40febfdf9b clib package
2010-06-17 00:40:25 +01:00

352 lines
7.3 KiB
C

/*
** Copyright 2000 Double Precision, Inc.
** See COPYING for distribution information.
*/
/*
** $Id$
*/
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "rfc822.h"
#include "imaprefs.h"
static void test1()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
char buf[20];
struct imap_refmsg *p;
strcpy(buf, "a@b");
p=rfc822_threadallocmsg(mt, buf);
strcpy(buf, "c@d");
p=rfc822_threadallocmsg(mt, buf);
printf("%s\n", (rfc822_threadsearchmsg(mt, "a@b")
? "found":"not found"));
printf("%s\n", (rfc822_threadsearchmsg(mt, "c@d")
? "found":"not found"));
printf("%s\n", (rfc822_threadsearchmsg(mt, "e@f")
? "found":"not found"));
rfc822_threadfree(mt);
}
static void prtree(struct imap_refmsg *m)
{
printf("<%s>", m->msgid ? m->msgid:"");
if (m->isdummy)
{
printf(" (dummy)");
}
printf(".parent=");
if (m->parent)
printf("<%s>", m->parent->msgid ? m->parent->msgid:"");
else
printf("ROOT");
printf("\n");
for (m=m->firstchild; m; m=m->nextsib)
prtree(m);
}
static void prpc(struct imap_refmsgtable *mt)
{
struct imap_refmsg *root=rfc822_threadgetroot(mt), *m;
if (!root)
return;
for (m=root->firstchild; m; m=m->nextsib)
prtree(m);
printf("\n\n");
}
static void test2()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
rfc822_threadmsg(mt, "<1>", NULL,
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<2>",
"<1>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<4>",
"<1> <2> <3>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
prpc(mt);
rfc822_threadfree(mt);
}
static void test3()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
rfc822_threadmsg(mt, "<4>",
"<2> <1> <3>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<3>",
"<1> <2>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<2>",
"<1>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<1>", NULL,
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
prpc(mt);
rfc822_threadfree(mt);
}
static void test4()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
rfc822_threadmsg(mt, "<1>", NULL,
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<2>", "<1>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<4>", "<1> <2> <3>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
prpc(mt);
rfc822_threadprune(mt);
prpc(mt);
rfc822_threadfree(mt);
}
static void test5()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
rfc822_threadmsg(mt, "<4>", "<1> <2> <3>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<3>", NULL,
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
prpc(mt);
rfc822_threadprune(mt);
prpc(mt);
rfc822_threadfree(mt);
}
static void prsubj(struct imap_refmsgtable *p)
{
struct imap_subjlookup *s;
int i;
for (i=0; i<sizeof(p->subjtable)/sizeof(p->subjtable[0]); i++)
for (s=p->subjtable[i]; s; s=s->nextsubj)
printf("subject(%s)=<%s>\n", s->subj,
s->msg->msgid ? s->msg->msgid:"");
printf("\n\n");
}
static void test6()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
rfc822_threadmsg(mt, "<message1>", NULL,
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message10>", NULL,
"subject 2",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message3>", "<message2>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message11>", NULL,
"Re: subject 4",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message12>", NULL,
"subject 4",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message13>", NULL,
"subject 5",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message14>", NULL,
"re: subject 5",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadprune(mt);
rfc822_threadsortsubj(mt, rfc822_threadgetroot(mt));
prpc(mt);
prsubj(mt);
rfc822_threadfree(mt);
}
static void test7()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
rfc822_threadmsg(mt, "<message1>", "<message1-dummy>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message2>", "<message2-dummy>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadprune(mt);
rfc822_threadsortsubj(mt, rfc822_threadgetroot(mt));
prpc(mt);
prsubj(mt);
rfc822_threadmergesubj(mt, rfc822_threadgetroot(mt));
prpc(mt);
rfc822_threadfree(mt);
}
static void test8()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
rfc822_threadmsg(mt, "<message4>", NULL,
"subject 2",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message2>", NULL,
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message1>", "<message1-dummy>",
"subject 1",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message3>", NULL,
"Re: subject 2",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message10>", NULL,
"subject 10",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message11>", NULL,
"subject 10",
"Thu, 29 Jun 2000 14:41:58 -0700", 1);
rfc822_threadprune(mt);
rfc822_threadsortsubj(mt, rfc822_threadgetroot(mt));
prpc(mt);
prsubj(mt);
rfc822_threadmergesubj(mt, rfc822_threadgetroot(mt));
prpc(mt);
rfc822_threadfree(mt);
}
static void test9()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
rfc822_threadmsg(mt, "<message1>", NULL,
"subject 1",
"Thu, 20 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message2>", NULL,
"subject 1",
"Thu, 19 Jun 2000 14:41:58 -0700", 2);
rfc822_threadmsg(mt, "<message3>", NULL,
"subject 1",
"Thu, 21 Jun 2000 14:41:58 -0700", 3);
rfc822_threadmsg(mt, "<message4>", "<message2>",
"subject 2",
"Thu, 21 Jun 2000 14:41:58 -0700", 6);
rfc822_threadmsg(mt, "<message5>", "<message2>",
"subject 2",
"Thu, 21 Jun 2000 14:41:58 -0700", 5);
rfc822_threadmsg(mt, "<message6>", "<message2>",
"subject 2",
"Thu, 20 Jun 2000 14:41:58 -0700", 4);
rfc822_threadprune(mt);
rfc822_threadsortsubj(mt, rfc822_threadgetroot(mt));
rfc822_threadmergesubj(mt, rfc822_threadgetroot(mt));
rfc822_threadsortbydate(mt);
prpc(mt);
rfc822_threadfree(mt);
}
static void test10()
{
struct imap_refmsgtable *mt=rfc822_threadalloc();
rfc822_threadmsg(mt, "<message1>", NULL,
"subject 1",
"Thu, 20 Jun 2000 14:41:58 -0700", 1);
rfc822_threadmsg(mt, "<message4>", "<message1>",
"subject 2",
"Thu, 21 Jun 2000 14:41:58 -0700", 6);
rfc822_threadmsg(mt, "<message1>", NULL,
"subject 2",
"Thu, 21 Jun 2000 14:41:58 -0700", 5);
rfc822_threadmsg(mt, "<message4>", "<message1>",
"subject 2",
"Thu, 21 Jun 2000 14:41:58 -0700", 6);
rfc822_threadprune(mt);
rfc822_threadsortsubj(mt, rfc822_threadgetroot(mt));
rfc822_threadmergesubj(mt, rfc822_threadgetroot(mt));
rfc822_threadsortbydate(mt);
prpc(mt);
rfc822_threadfree(mt);
}
int main(int argc, char **argv)
{
test1();
test2();
test3();
test4();
test5();
test6();
test7();
test8();
test9();
test10();
return (0);
}