1
- #include "test-lib .h"
1
+ #include "unit-test .h"
2
2
#include "hex.h"
3
3
#include "strbuf.h"
4
4
5
5
static void check_hash_data (const void * data , size_t data_length ,
6
6
const char * expected_hashes [])
7
7
{
8
- if (!check (data != NULL )) {
9
- test_msg ("BUG: NULL data pointer provided" );
10
- return ;
11
- }
8
+ cl_assert (data != NULL );
12
9
13
10
for (size_t i = 1 ; i < ARRAY_SIZE (hash_algos ); i ++ ) {
14
11
git_hash_ctx ctx ;
@@ -19,66 +16,94 @@ static void check_hash_data(const void *data, size_t data_length,
19
16
algop -> update_fn (& ctx , data , data_length );
20
17
algop -> final_fn (hash , & ctx );
21
18
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 ]);
24
20
}
25
21
}
26
22
27
23
/* Works with a NUL terminated string. Doesn't work if it should contain a NUL character. */
28
24
#define TEST_HASH_STR (data , expected_sha1 , expected_sha256 ) do { \
29
25
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); \
32
27
} while (0)
33
28
34
29
/* Only works with a literal string, useful when it contains a NUL character. */
35
30
#define TEST_HASH_LITERAL (literal , expected_sha1 , expected_sha256 ) do { \
36
31
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); \
39
33
} while (0)
40
34
41
- int cmd_main ( int argc UNUSED , const char * * argv UNUSED )
35
+ void test_hash__empty_string ( void )
42
36
{
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
-
49
37
TEST_HASH_STR ("" ,
50
38
"da39a3ee5e6b4b0d3255bfef95601890afd80709" ,
51
39
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" );
40
+ }
41
+
42
+ void test_hash__single_character (void )
43
+ {
52
44
TEST_HASH_STR ("a" ,
53
45
"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8" ,
54
46
"ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb" );
47
+ }
48
+
49
+ void test_hash__multi_character (void )
50
+ {
55
51
TEST_HASH_STR ("abc" ,
56
52
"a9993e364706816aba3e25717850c26c9cd0d89d" ,
57
53
"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad" );
54
+ }
55
+
56
+ void test_hash__message_digest (void )
57
+ {
58
58
TEST_HASH_STR ("message digest" ,
59
59
"c12252ceda8be8994d5fa0290a47231c1d16aae3" ,
60
60
"f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650" );
61
+ }
62
+
63
+ void test_hash__alphabet (void )
64
+ {
61
65
TEST_HASH_STR ("abcdefghijklmnopqrstuvwxyz" ,
62
66
"32d10c7b8cf96570ca04ce37f2a19d84240d3a89" ,
63
67
"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 );
64
74
TEST_HASH_STR (aaaaaaaaaa_100000 .buf ,
65
75
"34aa973cd4c4daa4f61eeb2bdbad27316534016f" ,
66
76
"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 );
67
84
TEST_HASH_STR (alphabet_100000 .buf ,
68
85
"e7da7c55b3484fdf52aebec9cbe7b85a98f02fd4" ,
69
86
"e406ba321ca712ad35a698bf0af8d61fc4dc40eca6bdcea4697962724ccbde35" );
87
+ strbuf_release (& alphabet_100000 );
88
+ }
89
+
90
+ void test_hash__zero_blob_literal (void )
91
+ {
70
92
TEST_HASH_LITERAL ("blob 0\0" ,
71
93
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" ,
72
94
"473a0f4c3be8a93681a267e3b1e9a7dcda1185436fe141f7749120a303721813" );
95
+ }
96
+
97
+ void test_hash__three_blob_literal (void )
98
+ {
73
99
TEST_HASH_LITERAL ("blob 3\0abc" ,
74
100
"f2ba8f84ab5c1bce84a7b441cb1959cfc7093b7f" ,
75
101
"c1cf6e465077930e88dc5136641d402f72a229ddd996f627d60e9639eaba35a6" );
102
+ }
103
+
104
+ void test_hash__zero_tree_literal (void )
105
+ {
76
106
TEST_HASH_LITERAL ("tree 0\0" ,
77
107
"4b825dc642cb6eb9a060e54bf8d69288fbee4904" ,
78
108
"6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321" );
79
-
80
- strbuf_release (& aaaaaaaaaa_100000 );
81
- strbuf_release (& alphabet_100000 );
82
-
83
- return test_done ();
84
109
}
0 commit comments