You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2015/11/23 10:24:14 UTC

svn commit: r1715740 - /subversion/trunk/subversion/tests/libsvn_subr/hashdump-test.c

Author: ivan
Date: Mon Nov 23 09:24:14 2015
New Revision: 1715740

URL: http://svn.apache.org/viewvc?rev=1715740&view=rev
Log:
Add test for reading hash from buffered APR file.

* subversion/tests/libsvn_subr/hashdump-test.c
  (hash_gets_stringt, read_hash_buffered_test): New.
  (test_funcs): Add read_hash_buffered_test() to test list.

Modified:
    subversion/trunk/subversion/tests/libsvn_subr/hashdump-test.c

Modified: subversion/trunk/subversion/tests/libsvn_subr/hashdump-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/hashdump-test.c?rev=1715740&r1=1715739&r2=1715740&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/hashdump-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/hashdump-test.c Mon Nov 23 09:24:14 2015
@@ -168,6 +168,67 @@ test3(apr_pool_t *pool)
 }
 
 
+static const char *
+hash_gets_stringt(apr_hash_t *ht, const char *key)
+{
+  svn_string_t *str = svn_hash_gets(ht, key);
+  if (str)
+    return str->data;
+  else
+    return NULL;
+}
+
+static svn_error_t *
+read_hash_buffered_test(apr_pool_t *pool)
+{
+  apr_file_t *file;
+  apr_hash_t *ht;
+
+  /* Write hash table to file. */
+  ht = apr_hash_make(pool);
+  svn_hash_sets(ht, "key1", svn_string_create("value1", pool));
+  svn_hash_sets(ht, "key2", svn_string_create("value2", pool));
+  svn_hash_sets(ht, "key3", svn_string_create("value3", pool));
+  svn_hash_sets(ht, "key4", svn_string_create("value4", pool));
+  svn_hash_sets(ht, "key5", svn_string_create("value5", pool));
+  svn_hash_sets(ht, "key6", svn_string_create("value6", pool));
+  svn_hash_sets(ht, "key7", svn_string_create("value7", pool));
+  svn_hash_sets(ht, "key8", svn_string_create("value8", pool));
+
+  SVN_ERR(svn_io_file_open(&file, "hashdump.out",
+                           APR_FOPEN_CREATE | APR_FOPEN_WRITE | APR_FOPEN_BUFFERED,
+                           APR_OS_DEFAULT, pool));
+
+  SVN_ERR(svn_hash_write2(ht, svn_stream_from_aprfile2(file, FALSE, pool),
+                          SVN_HASH_TERMINATOR, pool));
+
+  SVN_ERR(svn_io_file_close(file, pool));
+
+  /* Read hash table using buffered APR file. */
+  ht = apr_hash_make(pool);
+  SVN_ERR(svn_io_file_open(&file, "hashdump.out",
+                           APR_FOPEN_READ | APR_FOPEN_BUFFERED,
+                           APR_OS_DEFAULT, pool));
+  SVN_ERR(svn_hash_read2(ht, svn_stream_from_aprfile(file, pool),
+                         SVN_HASH_TERMINATOR, pool));
+  SVN_ERR(svn_io_file_close(file, pool));
+
+  /* Check result. */
+  SVN_TEST_STRING_ASSERT(hash_gets_stringt(ht, "key1"), "value1");
+  SVN_TEST_STRING_ASSERT(hash_gets_stringt(ht, "key2"), "value2");
+  SVN_TEST_STRING_ASSERT(hash_gets_stringt(ht, "key3"), "value3");
+  SVN_TEST_STRING_ASSERT(hash_gets_stringt(ht, "key4"), "value4");
+  SVN_TEST_STRING_ASSERT(hash_gets_stringt(ht, "key5"), "value5");
+  SVN_TEST_STRING_ASSERT(hash_gets_stringt(ht, "key6"), "value6");
+  SVN_TEST_STRING_ASSERT(hash_gets_stringt(ht, "key7"), "value7");
+  SVN_TEST_STRING_ASSERT(hash_gets_stringt(ht, "key8"), "value8");
+
+  SVN_TEST_ASSERT(apr_hash_count(ht) == 8);
+
+  SVN_ERR(svn_io_remove_file2("hashdump.out", TRUE, pool));
+
+  return SVN_NO_ERROR;
+}
 
 
 /*
@@ -189,6 +250,8 @@ static struct svn_test_descriptor_t test
                    "read a file into a hash"),
     SVN_TEST_PASS2(test3,
                    "write hash out, read back in, compare"),
+    SVN_TEST_PASS2(read_hash_buffered_test,
+                   "read hash from buffered file"),
     SVN_TEST_NULL
   };