Index: ossp-pkg/xds/regression-tests/xds-register.c RCS File: /v/ossp/cvs/ossp-pkg/xds/regression-tests/Attic/xds-register.c,v rcsdiff -q -kk '-r1.1' '-r1.2' -u '/v/ossp/cvs/ossp-pkg/xds/regression-tests/Attic/xds-register.c,v' 2>/dev/null --- xds-register.c 2001/07/08 14:06:07 1.1 +++ xds-register.c 2001/07/08 15:18:50 1.2 @@ -26,80 +26,84 @@ */ #include +#include #include +#include #include "../internal.h" static int dummy_engine(xds_t* xds, void* engine_context, void* buffer, size_t buffer_size, va_list args) { - if (xds == NULL) - { - printf("XDS context isn't passed through to registered engine.\n"); - exit(1); - } - if (engine_context != (void*)42) - { - printf("Engine context isn't passed through to registered engine.\n"); - exit(1); - } - if (buffer == NULL) - { - printf("Buffer passed to engine is NULL.\n"); - exit(1); - } - if (buffer_size == 0) - { - printf("Buffer size passed to engine is NULL.\n"); - exit(1); - } return 0; } int main() { xds_t* xds; + size_t i; - /* Create contexts for encoding and decoding. */ + /* Create context. */ xds = xds_init(XDS_ENCODE); if (xds == NULL) - { - printf("Failed to initialize XDS context.\n"); - return 1; - } + { + printf("Failed to initialize XDS context.\n"); + return 1; + } /* Register the dummy callback under multiple names. */ - if (xds_register(xds, "foo", &dummy_engine, (void*)42) != XDS_OK) + if (xds_register(xds, "foo", &dummy_engine, NULL) != XDS_OK) { printf("Failed to register engine for 'foo'.\n"); return 1; } - if (xds_register(xds, "bar", &dummy_engine, (void*)42) != XDS_OK) + if (xds_register(xds, "bar", &dummy_engine, NULL) != XDS_OK) { printf("Failed to register engine for 'bar'.\n"); return 1; } - if (xds_register(xds, "zarah", &dummy_engine, (void*)42) != XDS_OK) + if (xds_register(xds, "zarah", &dummy_engine, NULL) != XDS_OK) { printf("Failed to register engine for 'zarah'.\n"); return 1; } - if (xds_register(xds, "caesar", &dummy_engine, (void*)42) != XDS_OK) + if (xds_register(xds, "caesar", &dummy_engine, NULL) != XDS_OK) { printf("Failed to register engine for 'caesar'.\n"); return 1; } - if (xds_register(xds, "claus", &dummy_engine, (void*)42) != XDS_OK) + if (xds_register(xds, "claus", &dummy_engine, NULL) != XDS_OK) { printf("Failed to register engine for 'claus'.\n"); return 1; } - if (xds_register(xds, "heinz", &dummy_engine, (void*)42) != XDS_OK) + if (xds_register(xds, "heinz", &dummy_engine, NULL) != XDS_OK) { printf("Failed to register engine for 'heinz'.\n"); return 1; } + /* Register the callback again, overwriting an existing entry. */ + + if (xds_register(xds, "claus", &dummy_engine, NULL) != XDS_OK) + { + printf("Failed to re-register engine for 'claus'.\n"); + return 1; + } + + /* Ensure that everything is in alphabetical order. */ + + for (i = 1; i < xds->engines_len; ++i) + { + assert(xds->engines[i-1].name != NULL); + assert(xds->engines[i].name != NULL); + if (strcmp(xds->engines[i-1].name, xds->engines[i].name) >= 0) + { + printf("xds->engines is not in alphabetical order!\n"); + exit(1); + } + } + /* Clean up. */ xds_destroy(xds);