static char *test_HDR_InsertIdx(void) { #define NODES 10 #define SIZEOF_NEXTTBL (64 * sizeof(struct hdrt_node *)) struct hdrt_node *hdrt, *hdrt2, *next; printf("... testing HDR_InsertIdx()\n"); next = calloc(64, sizeof(next)); MAN(next); hdrt = HDR_InsertIdx(NULL, "Foo", 4711); MCHECK_OBJ_NOTNULL(hdrt, HDRT_NODE_MAGIC); MASSERT(strcmp(hdrt->str, "FOO") == 0); MASSERT(hdrt->idx == 4711); MASSERT(memcmp(hdrt->next, next, SIZEOF_NEXTTBL) == 0); MASSERT(HDR_FindIdx(hdrt, "Foo:") == 4711); MASSERT(HDR_FindIdx(hdrt, "Foo: bar") == 4711); MASSERT(HDR_FindIdx(hdrt, "Foo:bar") == 4711); MASSERT(HDR_FindIdx(hdrt, "Foo: bar baz") == 4711); MASSERT(HDR_FindIdx(hdrt, " Foo : ") == 4711); MASSERT(HDR_FindIdx(hdrt, " fOO : ") == 4711); MASSERT(HDR_FindIdx(hdrt, "Bar:") == -1); MASSERT(HDR_FindIdx(hdrt, " Bar:") == -1); MASSERT(HDR_FindIdx(hdrt, "Fo:") == -1); MASSERT(HDR_FindIdx(hdrt, "Food:") == -1); MASSERT(HDR_FindIdx(hdrt, "Foo bar baz") == -1); MASSERT(HDR_FindIdx(hdrt, "Foo") == -1); MASSERT(HDR_FindIdx(hdrt, " Foo ") == -1); MASSERT(HDR_FindIdx(hdrt, " ") == -1); MASSERT(HDR_FindIdx(hdrt, "") == -1); hdrt = HDR_InsertIdx(hdrt, "Foo", 4711); MCHECK_OBJ_NOTNULL(hdrt, HDRT_NODE_MAGIC); MASSERT(HDR_FindIdx(hdrt, "Foo:") == 4711); hdrt = HDR_InsertIdx(hdrt, "Bar", 1147); MCHECK_OBJ_NOTNULL(hdrt, HDRT_NODE_MAGIC); MASSERT(*hdrt->str == '\0'); MASSERT(hdrt->idx == -1); for (int i = 0; i < 64; i ++) if (i != next_idx('B') && i != next_idx('F')) MAZ(hdrt->next[i]); hdrt2 = hdrt->next[next_idx('B')]; MCHECK_OBJ_NOTNULL(hdrt2, HDRT_NODE_MAGIC); MASSERT(strcmp(hdrt2->str, "AR") == 0); MASSERT(hdrt2->idx == 1147); MASSERT(memcmp(hdrt2->next, next, SIZEOF_NEXTTBL) == 0); hdrt2 = hdrt->next[next_idx('F')]; MCHECK_OBJ_NOTNULL(hdrt2, HDRT_NODE_MAGIC); MASSERT(strcmp(hdrt2->str, "OO") == 0); MASSERT(hdrt2->idx == 4711); MASSERT(memcmp(hdrt2->next, next, SIZEOF_NEXTTBL) == 0); MASSERT(HDR_FindIdx(hdrt, "Foo:") == 4711); MASSERT(HDR_FindIdx(hdrt, "Bar:") == 1147); hdrt = HDR_InsertIdx(NULL, "Accept", 1); MCHECK_OBJ_NOTNULL(hdrt, HDRT_NODE_MAGIC); hdrt = HDR_InsertIdx(hdrt, "Accept-Encoding", 2); MCHECK_OBJ_NOTNULL(hdrt, HDRT_NODE_MAGIC); MASSERT(strcmp(hdrt->str, "ACCEPT") == 0); MASSERT(hdrt->idx == 1); for (int i = 0; i < 64; i ++) if (i != next_idx('-')) MAZ(hdrt->next[i]); hdrt2 = hdrt->next[next_idx('-')]; MCHECK_OBJ_NOTNULL(hdrt2, HDRT_NODE_MAGIC); MASSERT(strcmp(hdrt2->str, "ENCODING") == 0); MASSERT(hdrt2->idx == 2); MASSERT(memcmp(hdrt2->next, next, SIZEOF_NEXTTBL) == 0); MASSERT(HDR_FindIdx(hdrt, "Accept:") == 1); MASSERT(HDR_FindIdx(hdrt, "Accept-Encoding:") == 2); hdrt = HDR_InsertIdx(hdrt, "Accept-Charset", 3); MCHECK_OBJ_NOTNULL(hdrt, HDRT_NODE_MAGIC); hdrt = HDR_InsertIdx(hdrt, "Accept-Language", 4); MCHECK_OBJ_NOTNULL(hdrt, HDRT_NODE_MAGIC); hdrt = HDR_InsertIdx(hdrt, "Accept-Datetime", 5); MCHECK_OBJ_NOTNULL(hdrt, HDRT_NODE_MAGIC); MASSERT(strcmp(hdrt->str, "ACCEPT") == 0); MASSERT(hdrt->idx == 1); for (int i = 0; i < 64; i ++) if (i != next_idx('-')) MAZ(hdrt->next[i]); hdrt2 = hdrt->next[next_idx('-')]; MCHECK_OBJ_NOTNULL(hdrt2, HDRT_NODE_MAGIC); MASSERT(*hdrt2->str == '\0'); MASSERT(hdrt2->idx == -1); for (int i = 0; i < 64; i ++) if (i != next_idx('C') && i != next_idx('D') && i != next_idx('E') && i != next_idx('L')) MAZ(hdrt2->next[i]); MCHECK_OBJ_NOTNULL(hdrt2->next[next_idx('C')], HDRT_NODE_MAGIC); MCHECK_OBJ_NOTNULL(hdrt2->next[next_idx('D')], HDRT_NODE_MAGIC); MCHECK_OBJ_NOTNULL(hdrt2->next[next_idx('E')], HDRT_NODE_MAGIC); MCHECK_OBJ_NOTNULL(hdrt2->next[next_idx('L')], HDRT_NODE_MAGIC); MASSERT(strcmp(hdrt2->next[next_idx('C')]->str, "HARSET") == 0); MASSERT(hdrt2->next[next_idx('C')]->idx == 3); MASSERT(strcmp(hdrt2->next[next_idx('D')]->str, "ATETIME") == 0); MASSERT(hdrt2->next[next_idx('D')]->idx == 5); MASSERT(strcmp(hdrt2->next[next_idx('E')]->str, "NCODING") == 0); MASSERT(hdrt2->next[next_idx('E')]->idx == 2); MASSERT(strcmp(hdrt2->next[next_idx('L')]->str, "ANGUAGE") == 0); MASSERT(hdrt2->next[next_idx('L')]->idx == 4); MASSERT(HDR_FindIdx(hdrt, "Accept:") == 1); MASSERT(HDR_FindIdx(hdrt, "Accept-Charset:") == 3); MASSERT(HDR_FindIdx(hdrt, "Accept-Encoding:") == 2); MASSERT(HDR_FindIdx(hdrt, "Accept-Language:") == 4); MASSERT(HDR_FindIdx(hdrt, "Accept-Datetime:") == 5); hdrt = HDR_InsertIdx(NULL, "Accept-Encoding", 4711); hdrt = HDR_InsertIdx(hdrt, "Accept", 1147); MASSERT(HDR_FindIdx(hdrt, "Accept:") == 1147); MASSERT(HDR_FindIdx(hdrt, "Accept-Charset:") == -1); MASSERT(HDR_FindIdx(hdrt, "Accept-Encoding:") == 4711); hdrt = HDR_InsertIdx(NULL, "Content-Disposition", 1); hdrt = HDR_InsertIdx(hdrt, "Content-Encoding", 2); hdrt = HDR_InsertIdx(hdrt, "Content-Language", 3); hdrt = HDR_InsertIdx(hdrt, "Content-Length", 4); hdrt = HDR_InsertIdx(hdrt, "Content-Location", 5); hdrt = HDR_InsertIdx(hdrt, "Content-MD5", 6); hdrt = HDR_InsertIdx(hdrt, "Content-Range", 7); hdrt = HDR_InsertIdx(hdrt, "Content-Type", 8); MASSERT(HDR_FindIdx(hdrt, "Content-Disposition:") == 1); MASSERT(HDR_FindIdx(hdrt, "Content-Encoding:") == 2); MASSERT(HDR_FindIdx(hdrt, "Content-Language:") == 3); MASSERT(HDR_FindIdx(hdrt, "Content-Length:") == 4); MASSERT(HDR_FindIdx(hdrt, "Content-Location:") == 5); MASSERT(HDR_FindIdx(hdrt, "Content-MD5:") == 6); MASSERT(HDR_FindIdx(hdrt, "Content-Range:") == 7); MASSERT(HDR_FindIdx(hdrt, "Content-Type:") == 8); MASSERT(HDR_FindIdx(hdrt, "Content-:") == -1); MASSERT(HDR_FindIdx(hdrt, "Content-L:") == -1); MASSERT(HDR_FindIdx(hdrt, "Content-La:") == -1); MASSERT(HDR_FindIdx(hdrt, "Content-Le:") == -1); MASSERT(HDR_FindIdx(hdrt, "Content-Lo:") == -1); MASSERT(HDR_FindIdx(hdrt, "Content:") == -1); MASSERT(HDR_FindIdx(hdrt, "Content-Foo:") == -1); hdrt = HDR_InsertIdx(NULL, "X-Csrf-Token", 11); hdrt = HDR_InsertIdx(hdrt, "X-Forwarded-For", 12); hdrt = HDR_InsertIdx(hdrt, "X-Forwarded-Host", 13); hdrt = HDR_InsertIdx(hdrt, "X-Forwarded-Proto", 14); MASSERT(HDR_FindIdx(hdrt, "X-Csrf-Token:") == 11); MASSERT(HDR_FindIdx(hdrt, "X-Forwarded-For:") == 12); MASSERT(HDR_FindIdx(hdrt, "X-Forwarded-Host:") == 13); MASSERT(HDR_FindIdx(hdrt, "X-Forwarded-Proto:") == 14); MASSERT(HDR_FindIdx(hdrt, "X-:") == -1); MASSERT(HDR_FindIdx(hdrt, "X-Forwarded-:") == -1); MASSERT(HDR_FindIdx(hdrt, "X-Forwarded-F:") == -1); MASSERT(HDR_FindIdx(hdrt, "X-Forwarded-H:") == -1); MASSERT(HDR_FindIdx(hdrt, "X-Forwarded-P:") == -1); hdrt = HDR_InsertIdx(NULL, "Beresp", 0); hdrt = HDR_InsertIdx(hdrt, "BerespBody", 1); hdrt = HDR_InsertIdx(hdrt, "Bereq", 2); MASSERT(HDR_FindIdx(hdrt, "Beresp:") == 0); MASSERT(HDR_FindIdx(hdrt, "BerespBody:") == 1); MASSERT(HDR_FindIdx(hdrt, "Bereq:") == 2); return NULL; }
main() { int i=10,j=5,k=0; k= MAN(i++,++j); printf("%d %d %d\n",i,j,k); }