]>
Commit | Line | Data |
---|---|---|
c25aa7cd PP |
1 | #include "clar_libgit2.h" |
2 | ||
ad5611d8 | 3 | void test_integer__multiply_int64_no_overflow(void) |
c25aa7cd PP |
4 | { |
5 | #if !defined(git__multiply_int64_overflow) | |
6 | int64_t result = 0; | |
7 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x0))); | |
8 | cl_assert_equal_i(result, INT64_C(0x0)); | |
9 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x1))); | |
10 | cl_assert_equal_i(result, INT64_C(0x0)); | |
11 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x1))); | |
12 | cl_assert_equal_i(result, INT64_C(0x0)); | |
13 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x2))); | |
14 | cl_assert_equal_i(result, INT64_C(0x0)); | |
15 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x2))); | |
16 | cl_assert_equal_i(result, INT64_C(0x0)); | |
17 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x7ffffffffffffff))); | |
18 | cl_assert_equal_i(result, INT64_C(0x0)); | |
19 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x7ffffffffffffff))); | |
20 | cl_assert_equal_i(result, INT64_C(0x0)); | |
21 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x800000000000000))); | |
22 | cl_assert_equal_i(result, INT64_C(0x0)); | |
23 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x800000000000000))); | |
24 | cl_assert_equal_i(result, INT64_C(0x0)); | |
25 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(0x7fffffffffffffff))); | |
26 | cl_assert_equal_i(result, INT64_C(0x0)); | |
27 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x7fffffffffffffff))); | |
28 | cl_assert_equal_i(result, INT64_C(0x0)); | |
29 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x0), INT64_C(-0x8000000000000000))); | |
30 | cl_assert_equal_i(result, INT64_C(0x0)); | |
31 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x0))); | |
32 | cl_assert_equal_i(result, INT64_C(0x0)); | |
33 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x1))); | |
34 | cl_assert_equal_i(result, INT64_C(0x1)); | |
35 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x1))); | |
36 | cl_assert_equal_i(result, INT64_C(-0x1)); | |
37 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x2))); | |
38 | cl_assert_equal_i(result, INT64_C(0x2)); | |
39 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x2))); | |
40 | cl_assert_equal_i(result, INT64_C(-0x2)); | |
41 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x7ffffffffffffff))); | |
42 | cl_assert_equal_i(result, INT64_C(0x7ffffffffffffff)); | |
43 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x7ffffffffffffff))); | |
44 | cl_assert_equal_i(result, INT64_C(-0x7ffffffffffffff)); | |
45 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x800000000000000))); | |
46 | cl_assert_equal_i(result, INT64_C(0x800000000000000)); | |
47 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x800000000000000))); | |
48 | cl_assert_equal_i(result, INT64_C(-0x800000000000000)); | |
49 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(0x7fffffffffffffff))); | |
50 | cl_assert_equal_i(result, INT64_C(0x7fffffffffffffff)); | |
51 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x7fffffffffffffff))); | |
52 | cl_assert_equal_i(result, INT64_C(-0x7fffffffffffffff)); | |
53 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x0))); | |
54 | cl_assert_equal_i(result, INT64_C(0x0)); | |
55 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x1))); | |
56 | cl_assert_equal_i(result, INT64_C(-0x1)); | |
57 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x1))); | |
58 | cl_assert_equal_i(result, INT64_C(0x1)); | |
59 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x2))); | |
60 | cl_assert_equal_i(result, INT64_C(-0x2)); | |
61 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x2))); | |
62 | cl_assert_equal_i(result, INT64_C(0x2)); | |
63 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x7ffffffffffffff))); | |
64 | cl_assert_equal_i(result, INT64_C(-0x7ffffffffffffff)); | |
65 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x7ffffffffffffff))); | |
66 | cl_assert_equal_i(result, INT64_C(0x7ffffffffffffff)); | |
67 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x800000000000000))); | |
68 | cl_assert_equal_i(result, INT64_C(-0x800000000000000)); | |
69 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x800000000000000))); | |
70 | cl_assert_equal_i(result, INT64_C(0x800000000000000)); | |
71 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(0x7fffffffffffffff))); | |
72 | cl_assert_equal_i(result, INT64_C(-0x7fffffffffffffff)); | |
73 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x7fffffffffffffff))); | |
74 | cl_assert_equal_i(result, INT64_C(0x7fffffffffffffff)); | |
75 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x0))); | |
76 | cl_assert_equal_i(result, INT64_C(0x0)); | |
77 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x1))); | |
78 | cl_assert_equal_i(result, INT64_C(0x2)); | |
79 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x1))); | |
80 | cl_assert_equal_i(result, INT64_C(-0x2)); | |
81 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x2))); | |
82 | cl_assert_equal_i(result, INT64_C(0x4)); | |
83 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x2))); | |
84 | cl_assert_equal_i(result, INT64_C(-0x4)); | |
85 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x7ffffffffffffff))); | |
86 | cl_assert_equal_i(result, INT64_C(0xffffffffffffffe)); | |
87 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x7ffffffffffffff))); | |
88 | cl_assert_equal_i(result, INT64_C(-0xffffffffffffffe)); | |
89 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x800000000000000))); | |
90 | cl_assert_equal_i(result, INT64_C(0x1000000000000000)); | |
91 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x800000000000000))); | |
92 | cl_assert_equal_i(result, INT64_C(-0x1000000000000000)); | |
93 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x0))); | |
94 | cl_assert_equal_i(result, INT64_C(0x0)); | |
95 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x1))); | |
96 | cl_assert_equal_i(result, INT64_C(-0x2)); | |
97 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x1))); | |
98 | cl_assert_equal_i(result, INT64_C(0x2)); | |
99 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x2))); | |
100 | cl_assert_equal_i(result, INT64_C(-0x4)); | |
101 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x2))); | |
102 | cl_assert_equal_i(result, INT64_C(0x4)); | |
103 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x7ffffffffffffff))); | |
104 | cl_assert_equal_i(result, INT64_C(-0xffffffffffffffe)); | |
105 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x7ffffffffffffff))); | |
106 | cl_assert_equal_i(result, INT64_C(0xffffffffffffffe)); | |
107 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x800000000000000))); | |
108 | cl_assert_equal_i(result, INT64_C(-0x1000000000000000)); | |
109 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x800000000000000))); | |
110 | cl_assert_equal_i(result, INT64_C(0x1000000000000000)); | |
111 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x4000000000000000))); | |
112 | cl_assert_equal_i(result, INT64_C(-0x8000000000000000)); | |
113 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x0))); | |
114 | cl_assert_equal_i(result, INT64_C(0x0)); | |
115 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x1))); | |
116 | cl_assert_equal_i(result, INT64_C(0x7ffffffffffffff)); | |
117 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x1))); | |
118 | cl_assert_equal_i(result, INT64_C(-0x7ffffffffffffff)); | |
119 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x2))); | |
120 | cl_assert_equal_i(result, INT64_C(0xffffffffffffffe)); | |
121 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x2))); | |
122 | cl_assert_equal_i(result, INT64_C(-0xffffffffffffffe)); | |
123 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x0))); | |
124 | cl_assert_equal_i(result, INT64_C(0x0)); | |
125 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x1))); | |
126 | cl_assert_equal_i(result, INT64_C(-0x7ffffffffffffff)); | |
127 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x1))); | |
128 | cl_assert_equal_i(result, INT64_C(0x7ffffffffffffff)); | |
129 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x2))); | |
130 | cl_assert_equal_i(result, INT64_C(-0xffffffffffffffe)); | |
131 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x2))); | |
132 | cl_assert_equal_i(result, INT64_C(0xffffffffffffffe)); | |
133 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x0))); | |
134 | cl_assert_equal_i(result, INT64_C(0x0)); | |
135 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x1))); | |
136 | cl_assert_equal_i(result, INT64_C(0x800000000000000)); | |
137 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x1))); | |
138 | cl_assert_equal_i(result, INT64_C(-0x800000000000000)); | |
139 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x2))); | |
140 | cl_assert_equal_i(result, INT64_C(0x1000000000000000)); | |
141 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x2))); | |
142 | cl_assert_equal_i(result, INT64_C(-0x1000000000000000)); | |
143 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x0))); | |
144 | cl_assert_equal_i(result, INT64_C(0x0)); | |
145 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x1))); | |
146 | cl_assert_equal_i(result, INT64_C(-0x800000000000000)); | |
147 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x1))); | |
148 | cl_assert_equal_i(result, INT64_C(0x800000000000000)); | |
149 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x2))); | |
150 | cl_assert_equal_i(result, INT64_C(-0x1000000000000000)); | |
151 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x2))); | |
152 | cl_assert_equal_i(result, INT64_C(0x1000000000000000)); | |
153 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x0))); | |
154 | cl_assert_equal_i(result, INT64_C(0x0)); | |
155 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x1))); | |
156 | cl_assert_equal_i(result, INT64_C(0x7fffffffffffffff)); | |
157 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x1))); | |
158 | cl_assert_equal_i(result, INT64_C(-0x7fffffffffffffff)); | |
159 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x4000000000000000), INT64_C(0x2))); | |
160 | cl_assert_equal_i(result, INT64_C(-0x8000000000000000)); | |
161 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x0))); | |
162 | cl_assert_equal_i(result, INT64_C(0x0)); | |
163 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x1))); | |
164 | cl_assert_equal_i(result, INT64_C(-0x7fffffffffffffff)); | |
165 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x1))); | |
166 | cl_assert_equal_i(result, INT64_C(0x7fffffffffffffff)); | |
167 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x0))); | |
168 | cl_assert_equal_i(result, INT64_C(0x0)); | |
169 | #endif | |
170 | } | |
171 | ||
ad5611d8 | 172 | void test_integer__multiply_int64_overflow(void) |
c25aa7cd PP |
173 | { |
174 | #if !defined(git__multiply_int64_overflow) | |
175 | int64_t result = 0; | |
176 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x4000000000000000))); | |
177 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(0x7fffffffffffffff))); | |
178 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x7fffffffffffffff))); | |
179 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x2), INT64_C(-0x8000000000000000))); | |
180 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(0x7fffffffffffffff))); | |
181 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x7fffffffffffffff))); | |
182 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x2), INT64_C(-0x8000000000000000))); | |
183 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x7ffffffffffffff))); | |
184 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x7ffffffffffffff))); | |
185 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x800000000000000))); | |
186 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x800000000000000))); | |
187 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(0x7fffffffffffffff))); | |
188 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x7fffffffffffffff))); | |
189 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7ffffffffffffff), INT64_C(-0x8000000000000000))); | |
190 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x7ffffffffffffff))); | |
191 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x7ffffffffffffff))); | |
192 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x800000000000000))); | |
193 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x800000000000000))); | |
194 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(0x7fffffffffffffff))); | |
195 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x7fffffffffffffff))); | |
196 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7ffffffffffffff), INT64_C(-0x8000000000000000))); | |
197 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x7ffffffffffffff))); | |
198 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x7ffffffffffffff))); | |
199 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x800000000000000))); | |
200 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x800000000000000))); | |
201 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(0x7fffffffffffffff))); | |
202 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x7fffffffffffffff))); | |
203 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x800000000000000), INT64_C(-0x8000000000000000))); | |
204 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x7ffffffffffffff))); | |
205 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x7ffffffffffffff))); | |
206 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x800000000000000))); | |
207 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x800000000000000))); | |
208 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(0x7fffffffffffffff))); | |
209 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x7fffffffffffffff))); | |
210 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x800000000000000), INT64_C(-0x8000000000000000))); | |
211 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x4000000000000000), INT64_C(0x2))); | |
212 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x2))); | |
213 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x2))); | |
214 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x7ffffffffffffff))); | |
215 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x7ffffffffffffff))); | |
216 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x800000000000000))); | |
217 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x800000000000000))); | |
218 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(0x7fffffffffffffff))); | |
219 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x7fffffffffffffff))); | |
220 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x7fffffffffffffff), INT64_C(-0x8000000000000000))); | |
221 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x2))); | |
222 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x2))); | |
223 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x7ffffffffffffff))); | |
224 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x7ffffffffffffff))); | |
225 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x800000000000000))); | |
226 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x800000000000000))); | |
227 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(0x7fffffffffffffff))); | |
228 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x7fffffffffffffff))); | |
229 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x7fffffffffffffff), INT64_C(-0x8000000000000000))); | |
230 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x2))); | |
231 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x2))); | |
232 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x7ffffffffffffff))); | |
233 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x7ffffffffffffff))); | |
234 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x800000000000000))); | |
235 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x800000000000000))); | |
236 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x7fffffffffffffff))); | |
237 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x7fffffffffffffff))); | |
238 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x8000000000000000))); | |
239 | #endif | |
240 | } | |
241 | ||
ad5611d8 | 242 | void test_integer__multiply_int64_edge_cases(void) |
c25aa7cd PP |
243 | { |
244 | #if !defined(git__multiply_int64_overflow) | |
245 | int64_t result = 0; | |
246 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(-0x1))); | |
247 | cl_assert_equal_i(result, INT64_C(-0x8000000000000000)); | |
248 | cl_assert(!git__multiply_int64_overflow(&result, INT64_C(-0x1), INT64_C(-0x8000000000000000))); | |
249 | cl_assert_equal_i(result, INT64_C(-0x8000000000000000)); | |
250 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(0x1), INT64_C(-0x8000000000000000))); | |
251 | cl_assert(git__multiply_int64_overflow(&result, INT64_C(-0x8000000000000000), INT64_C(0x1))); | |
252 | #endif | |
253 | } |