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 2005/09/21 12:53:23 UTC

svn commit: r290680 - in /apr/apr-util/branches/1.2.x: include/apr_buckets.h test/testbuckets.c

Author: jorton
Date: Wed Sep 21 03:53:18 2005
New Revision: 290680

URL: http://svn.apache.org/viewcvs?rev=290680&view=rev
Log:
Merge r290556, r290679 from trunk:

* include/apr_buckets.h (apr_brigade_partition): Document the return
value semantics.

* test/testbuckets.c (test_bucket_content): New function.
(test_partition): New test.

Modified:
    apr/apr-util/branches/1.2.x/include/apr_buckets.h
    apr/apr-util/branches/1.2.x/test/testbuckets.c

Modified: apr/apr-util/branches/1.2.x/include/apr_buckets.h
URL: http://svn.apache.org/viewcvs/apr/apr-util/branches/1.2.x/include/apr_buckets.h?rev=290680&r1=290679&r2=290680&view=diff
==============================================================================
--- apr/apr-util/branches/1.2.x/include/apr_buckets.h (original)
+++ apr/apr-util/branches/1.2.x/include/apr_buckets.h Wed Sep 21 03:53:18 2005
@@ -697,6 +697,10 @@
  * @param b The brigade to partition
  * @param point The offset at which to partition the brigade
  * @param after_point Returns a pointer to the first bucket after the partition
+ * @return APR_SUCCESS on success, APR_INCOMPLETE if the contents of the
+ * brigade were shorter than @a point, or an error code.
+ * @remark if APR_INCOMPLETE is returned, @a after_point will be set to
+ * the brigade sentinel.
  */
 APU_DECLARE(apr_status_t) apr_brigade_partition(apr_bucket_brigade *b,
                                                 apr_off_t point,

Modified: apr/apr-util/branches/1.2.x/test/testbuckets.c
URL: http://svn.apache.org/viewcvs/apr/apr-util/branches/1.2.x/test/testbuckets.c?rev=290680&r1=290679&r2=290680&view=diff
==============================================================================
--- apr/apr-util/branches/1.2.x/test/testbuckets.c (original)
+++ apr/apr-util/branches/1.2.x/test/testbuckets.c Wed Sep 21 03:53:18 2005
@@ -209,6 +209,22 @@
     apr_bucket_alloc_destroy(ba);
 }
 
+/* Test that bucket E has content EDATA of length ELEN. */
+static void test_bucket_content(abts_case *tc,
+                                apr_bucket *e,
+                                const char *edata,
+                                apr_size_t elen)
+{
+    const char *adata;
+    apr_size_t alen;
+
+    apr_assert_success(tc, "read from bucket",
+                       apr_bucket_read(e, &adata, &alen, 
+                                       APR_BLOCK_READ));
+
+    ABTS_ASSERT(tc, "read expected length", alen == elen);
+    ABTS_STR_NEQUAL(tc, edata, adata, elen);
+}
 
 static void test_splits(abts_case *tc, void *ctx)
 {
@@ -414,6 +430,36 @@
     apr_bucket_alloc_destroy(ba);
 }
 
+static const char hello[] = "hello, world";
+
+static void test_partition(abts_case *tc, void *data)
+{
+    apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p);
+    apr_bucket_brigade *bb = apr_brigade_create(p, ba);
+    apr_bucket *e;
+
+    e = apr_bucket_immortal_create(hello, strlen(hello), ba);
+    APR_BRIGADE_INSERT_HEAD(bb, e);
+
+    apr_assert_success(tc, "partition brigade",
+                       apr_brigade_partition(bb, 5, &e));
+
+    test_bucket_content(tc, APR_BRIGADE_FIRST(bb),
+                        "hello", 5);
+
+    test_bucket_content(tc, APR_BRIGADE_LAST(bb),
+                        ", world", 7);
+
+    ABTS_ASSERT(tc, "partition returns APR_INCOMPLETE",
+                apr_brigade_partition(bb, 8192, &e));
+
+    ABTS_ASSERT(tc, "APR_INCOMPLETE partition returned sentinel",
+                e == APR_BRIGADE_SENTINEL(bb));
+
+    apr_brigade_destroy(bb);
+    apr_bucket_alloc_destroy(ba);
+}
+
 abts_suite *testbuckets(abts_suite *suite)
 {
     suite = ADD_SUITE(suite);
@@ -428,6 +474,7 @@
     abts_run_test(suite, test_insertfile, NULL);
     abts_run_test(suite, test_manyfile, NULL);
     abts_run_test(suite, test_truncfile, NULL);
+    abts_run_test(suite, test_partition, NULL);
 
     return suite;
 }