You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by jo...@apache.org on 2004/11/17 14:56:19 UTC
svn commit: rev 76131 - apr/apr-util/trunk/test
Author: jorton
Date: Wed Nov 17 05:56:17 2004
New Revision: 76131
Modified:
apr/apr-util/trunk/test/testbuckets.c
Log:
Test apr_bucket_split for various bucket types:
* test/testbuckets.c (test_splits): New function.
Modified: apr/apr-util/trunk/test/testbuckets.c
==============================================================================
--- apr/apr-util/trunk/test/testbuckets.c (original)
+++ apr/apr-util/trunk/test/testbuckets.c Wed Nov 17 05:56:17 2004
@@ -16,6 +16,7 @@
#include "abts.h"
#include "testutil.h"
#include "apr_buckets.h"
+#include "apr_strings.h"
static void test_create(abts_case *tc, void *data)
{
@@ -208,6 +209,82 @@
}
+static void test_splits(abts_case *tc, void *ctx)
+{
+ apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p);
+ apr_bucket_brigade *bb;
+ apr_bucket *e;
+ char *str = "alphabeta";
+ int n;
+
+ bb = apr_brigade_create(p, ba);
+
+ APR_BRIGADE_INSERT_TAIL(bb,
+ apr_bucket_immortal_create(str, 9, ba));
+ APR_BRIGADE_INSERT_TAIL(bb,
+ apr_bucket_transient_create(str, 9, ba));
+ APR_BRIGADE_INSERT_TAIL(bb,
+ apr_bucket_heap_create(strdup(str), 9, free, ba));
+ APR_BRIGADE_INSERT_TAIL(bb,
+ apr_bucket_pool_create(apr_pstrdup(p, str), 9, p,
+ ba));
+
+ ABTS_ASSERT(tc, "four buckets inserted", count_buckets(bb) == 4);
+
+ /* now split each of the buckets after byte 5 */
+ for (n = 0, e = APR_BRIGADE_FIRST(bb); n < 4; n++) {
+ ABTS_ASSERT(tc, "reached end of brigade",
+ e != APR_BRIGADE_SENTINEL(bb));
+ ABTS_ASSERT(tc, "split bucket OK",
+ apr_bucket_split(e, 5) == APR_SUCCESS);
+ e = APR_BUCKET_NEXT(e);
+ ABTS_ASSERT(tc, "split OK", e != APR_BRIGADE_SENTINEL(bb));
+ e = APR_BUCKET_NEXT(e);
+ }
+
+ ABTS_ASSERT(tc, "four buckets split into eight",
+ count_buckets(bb) == 8);
+
+ for (n = 0, e = APR_BRIGADE_FIRST(bb); n < 4; n++) {
+ const char *data;
+ apr_size_t len;
+
+ apr_assert_success(tc, "read alpha from bucket",
+ apr_bucket_read(e, &data, &len, APR_BLOCK_READ));
+ ABTS_ASSERT(tc, "read 5 bytes", len == 5);
+ ABTS_STR_NEQUAL(tc, "alpha", data, 5);
+
+ e = APR_BUCKET_NEXT(e);
+
+ apr_assert_success(tc, "read beta from bucket",
+ apr_bucket_read(e, &data, &len, APR_BLOCK_READ));
+ ABTS_ASSERT(tc, "read 4 bytes", len == 4);
+ ABTS_STR_NEQUAL(tc, "beta", data, 5);
+
+ e = APR_BUCKET_NEXT(e);
+ }
+
+ /* now delete the "alpha" buckets */
+ for (n = 0, e = APR_BRIGADE_FIRST(bb); n < 4; n++) {
+ apr_bucket *f;
+
+ ABTS_ASSERT(tc, "reached end of brigade",
+ e != APR_BRIGADE_SENTINEL(bb));
+ f = APR_BUCKET_NEXT(e);
+ apr_bucket_delete(e);
+ e = APR_BUCKET_NEXT(f);
+ }
+
+ ABTS_ASSERT(tc, "eight buckets reduced to four",
+ count_buckets(bb) == 4);
+
+ flatten_match(tc, "flatten beta brigade", bb,
+ "beta" "beta" "beta" "beta");
+
+ apr_brigade_destroy(bb);
+ apr_bucket_alloc_destroy(ba);
+}
+
abts_suite *testbuckets(abts_suite *suite)
{
suite = ADD_SUITE(suite);
@@ -218,6 +295,7 @@
abts_run_test(suite, test_split, NULL);
abts_run_test(suite, test_bwrite, NULL);
abts_run_test(suite, test_splitline, NULL);
+ abts_run_test(suite, test_splits, NULL);
return suite;
}