1- #include "test-lib .h"
1+ #include "unit-test .h"
22#include "hex.h"
33#include "strbuf.h"
44
55static void check_hash_data (const void * data , size_t data_length ,
66 const char * expected_hashes [])
77{
8- if (!check (data != NULL )) {
9- test_msg ("BUG: NULL data pointer provided" );
10- return ;
11- }
8+ cl_assert (data != NULL );
129
1310 for (size_t i = 1 ; i < ARRAY_SIZE (hash_algos ); i ++ ) {
1411 git_hash_ctx ctx ;
@@ -19,66 +16,94 @@ static void check_hash_data(const void *data, size_t data_length,
1916 algop -> update_fn (& ctx , data , data_length );
2017 algop -> final_fn (hash , & ctx );
2118
22- if (!check_str (hash_to_hex_algop (hash , algop ), expected_hashes [i - 1 ]))
23- test_msg ("result does not match with the expected for %s\n" , hash_algos [i ].name );
19+ cl_assert_equal_s (hash_to_hex_algop (hash ,algop ), expected_hashes [i - 1 ]);
2420 }
2521}
2622
2723/* Works with a NUL terminated string. Doesn't work if it should contain a NUL character. */
2824#define TEST_HASH_STR (data , expected_sha1 , expected_sha256 ) do { \
2925 const char *expected_hashes[] = { expected_sha1, expected_sha256 }; \
30- TEST(check_hash_data(data, strlen(data), expected_hashes), \
31- "SHA1 and SHA256 (%s) works", #data); \
26+ check_hash_data(data, strlen(data), expected_hashes); \
3227 } while (0)
3328
3429/* Only works with a literal string, useful when it contains a NUL character. */
3530#define TEST_HASH_LITERAL (literal , expected_sha1 , expected_sha256 ) do { \
3631 const char *expected_hashes[] = { expected_sha1, expected_sha256 }; \
37- TEST(check_hash_data(literal, (sizeof(literal) - 1), expected_hashes), \
38- "SHA1 and SHA256 (%s) works", #literal); \
32+ check_hash_data(literal, (sizeof(literal) - 1), expected_hashes); \
3933 } while (0)
4034
41- int cmd_main ( int argc UNUSED , const char * * argv UNUSED )
35+ void test_hash__empty_string ( void )
4236{
43- struct strbuf aaaaaaaaaa_100000 = STRBUF_INIT ;
44- struct strbuf alphabet_100000 = STRBUF_INIT ;
45-
46- strbuf_addstrings (& aaaaaaaaaa_100000 , "aaaaaaaaaa" , 100000 );
47- strbuf_addstrings (& alphabet_100000 , "abcdefghijklmnopqrstuvwxyz" , 100000 );
48-
4937 TEST_HASH_STR ("" ,
5038 "da39a3ee5e6b4b0d3255bfef95601890afd80709" ,
5139 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" );
40+ }
41+
42+ void test_hash__single_character (void )
43+ {
5244 TEST_HASH_STR ("a" ,
5345 "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8" ,
5446 "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb" );
47+ }
48+
49+ void test_hash__multi_character (void )
50+ {
5551 TEST_HASH_STR ("abc" ,
5652 "a9993e364706816aba3e25717850c26c9cd0d89d" ,
5753 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad" );
54+ }
55+
56+ void test_hash__message_digest (void )
57+ {
5858 TEST_HASH_STR ("message digest" ,
5959 "c12252ceda8be8994d5fa0290a47231c1d16aae3" ,
6060 "f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650" );
61+ }
62+
63+ void test_hash__alphabet (void )
64+ {
6165 TEST_HASH_STR ("abcdefghijklmnopqrstuvwxyz" ,
6266 "32d10c7b8cf96570ca04ce37f2a19d84240d3a89" ,
6367 "71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73" );
68+ }
69+
70+ void test_hash__aaaaaaaaaa_100000 (void )
71+ {
72+ struct strbuf aaaaaaaaaa_100000 = STRBUF_INIT ;
73+ strbuf_addstrings (& aaaaaaaaaa_100000 , "aaaaaaaaaa" , 100000 );
6474 TEST_HASH_STR (aaaaaaaaaa_100000 .buf ,
6575 "34aa973cd4c4daa4f61eeb2bdbad27316534016f" ,
6676 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0" );
77+ strbuf_release (& aaaaaaaaaa_100000 );
78+ }
79+
80+ void test_hash__alphabet_100000 (void )
81+ {
82+ struct strbuf alphabet_100000 = STRBUF_INIT ;
83+ strbuf_addstrings (& alphabet_100000 , "abcdefghijklmnopqrstuvwxyz" , 100000 );
6784 TEST_HASH_STR (alphabet_100000 .buf ,
6885 "e7da7c55b3484fdf52aebec9cbe7b85a98f02fd4" ,
6986 "e406ba321ca712ad35a698bf0af8d61fc4dc40eca6bdcea4697962724ccbde35" );
87+ strbuf_release (& alphabet_100000 );
88+ }
89+
90+ void test_hash__zero_blob_literal (void )
91+ {
7092 TEST_HASH_LITERAL ("blob 0\0" ,
7193 "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" ,
7294 "473a0f4c3be8a93681a267e3b1e9a7dcda1185436fe141f7749120a303721813" );
95+ }
96+
97+ void test_hash__three_blob_literal (void )
98+ {
7399 TEST_HASH_LITERAL ("blob 3\0abc" ,
74100 "f2ba8f84ab5c1bce84a7b441cb1959cfc7093b7f" ,
75101 "c1cf6e465077930e88dc5136641d402f72a229ddd996f627d60e9639eaba35a6" );
102+ }
103+
104+ void test_hash__zero_tree_literal (void )
105+ {
76106 TEST_HASH_LITERAL ("tree 0\0" ,
77107 "4b825dc642cb6eb9a060e54bf8d69288fbee4904" ,
78108 "6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321" );
79-
80- strbuf_release (& aaaaaaaaaa_100000 );
81- strbuf_release (& alphabet_100000 );
82-
83- return test_done ();
84109}
0 commit comments