You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2013/03/15 19:53:10 UTC

svn commit: r1457064 - in /subversion/trunk/subversion: bindings/swig/python/tests/checksum.py tests/libsvn_subr/checksum-test.c

Author: philip
Date: Fri Mar 15 18:53:10 2013
New Revision: 1457064

URL: http://svn.apache.org/r1457064
Log:
Test the behaviour of svn_checksum_match.

* subversion/tests/libsvn_subr/checksum-test.c
  (zero_match): New test.
  (test_funcs): Add new test.

Modified:
    subversion/trunk/subversion/bindings/swig/python/tests/checksum.py
    subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c

Modified: subversion/trunk/subversion/bindings/swig/python/tests/checksum.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/tests/checksum.py?rev=1457064&r1=1457063&r2=1457064&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/python/tests/checksum.py (original)
+++ subversion/trunk/subversion/bindings/swig/python/tests/checksum.py Fri Mar 15 18:53:10 2013
@@ -36,6 +36,11 @@ class ChecksumTestCases(unittest.TestCas
         self.assertEqual(int(check_val), 0,
                          "Value of initialized digest is not 0")
 
+        val1 = svn.core.svn_checksum_create(svn.core.svn_checksum_md5)
+        val2 = svn.core.svn_checksum_create(svn.core.svn_checksum_md5)
+        val1.digest = 'foo'
+        print svn.core.svn_checksum_match(val1, val2)
+
 def suite():
     return unittest.defaultTestLoader.loadTestsFromTestCase(ChecksumTestCases)
 

Modified: subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c?rev=1457064&r1=1457063&r2=1457064&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_subr/checksum-test.c Fri Mar 15 18:53:10 2013
@@ -113,6 +113,48 @@ test_pseudo_md5(apr_pool_t *pool)
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+zero_match(apr_pool_t *pool)
+{
+  svn_checksum_t *zero_md5;
+  svn_checksum_t *zero_sha1;
+  svn_checksum_t *A_md5;
+  svn_checksum_t *B_md5;
+  svn_checksum_t *A_sha1;
+  svn_checksum_t *B_sha1;
+  
+  
+  zero_md5 = svn_checksum_create(svn_checksum_md5, pool);
+  SVN_ERR(svn_checksum_clear(zero_md5));
+  SVN_ERR(svn_checksum(&A_md5, svn_checksum_md5, "A", 1, pool));
+  SVN_ERR(svn_checksum(&B_md5, svn_checksum_md5, "B", 1, pool));
+
+  zero_sha1 = svn_checksum_create(svn_checksum_sha1, pool);
+  SVN_ERR(svn_checksum_clear(zero_sha1));
+  SVN_ERR(svn_checksum(&A_sha1, svn_checksum_sha1, "A", 1, pool));
+  SVN_ERR(svn_checksum(&B_sha1, svn_checksum_sha1, "B", 1, pool));
+
+  /* Different non-zero don't match. */
+  SVN_TEST_ASSERT(!svn_checksum_match(A_md5, B_md5));
+  SVN_TEST_ASSERT(!svn_checksum_match(A_sha1, B_sha1));
+  SVN_TEST_ASSERT(!svn_checksum_match(A_md5, A_sha1));
+  SVN_TEST_ASSERT(!svn_checksum_match(A_md5, B_sha1));
+
+  /* Zero matches anything of the same kind. */
+  SVN_TEST_ASSERT(svn_checksum_match(A_md5, zero_md5));
+  SVN_TEST_ASSERT(svn_checksum_match(zero_md5, B_md5));
+  SVN_TEST_ASSERT(svn_checksum_match(A_sha1, zero_sha1));
+  SVN_TEST_ASSERT(svn_checksum_match(zero_sha1, B_sha1));
+
+  /* Zero doesn't match anything of a different kind... */
+  SVN_TEST_ASSERT(!svn_checksum_match(zero_md5, A_sha1));
+  SVN_TEST_ASSERT(!svn_checksum_match(zero_sha1, A_md5));
+  /* ...even another zero. */
+  SVN_TEST_ASSERT(!svn_checksum_match(zero_md5, zero_sha1));
+
+  return SVN_NO_ERROR;
+}
+
 /* An array of all test functions */
 struct svn_test_descriptor_t test_funcs[] =
   {
@@ -123,5 +165,7 @@ struct svn_test_descriptor_t test_funcs[
                    "checksum emptiness"),
     SVN_TEST_PASS2(test_pseudo_md5,
                    "pseudo-md5 compatibility"),
+    SVN_TEST_PASS2(zero_match,
+                   "zero checksum matching"),
     SVN_TEST_NULL
   };