| #include "unity/unity.h" |
| #include "zlib.h" |
|
|
| #include <limits.h> |
| #include <stdint.h> |
|
|
| |
| unsigned gz_intmax(void); |
|
|
| void setUp(void) { |
| |
| } |
|
|
| void tearDown(void) { |
| |
| } |
|
|
| |
| static unsigned expected_intmax_by_bits(void) { |
| |
| unsigned bits = (unsigned)(sizeof(int) * CHAR_BIT); |
| |
| unsigned long long one = 1ULL; |
| unsigned long long max_val = (one << (bits - 1)) - 1ULL; |
| return (unsigned)max_val; |
| } |
|
|
| void test_gz_intmax_equals_INT_MAX(void) { |
| unsigned got = gz_intmax(); |
| TEST_ASSERT_EQUAL_UINT((unsigned)INT_MAX, got); |
| } |
|
|
| void test_gz_intmax_matches_bit_calculation(void) { |
| unsigned got = gz_intmax(); |
| unsigned expected = expected_intmax_by_bits(); |
| TEST_ASSERT_EQUAL_UINT(expected, got); |
| } |
|
|
| void test_gz_intmax_is_consistent_across_calls(void) { |
| unsigned a = gz_intmax(); |
| unsigned b = gz_intmax(); |
| unsigned c = gz_intmax(); |
| TEST_ASSERT_EQUAL_UINT(a, b); |
| TEST_ASSERT_EQUAL_UINT(b, c); |
| } |
|
|
| void test_gz_intmax_basic_properties(void) { |
| unsigned v = gz_intmax(); |
|
|
| |
| TEST_ASSERT_TRUE(v > 0); |
| TEST_ASSERT_TRUE(v <= (unsigned)UINT_MAX); |
|
|
| |
| TEST_ASSERT_TRUE(v != (unsigned)UINT_MAX); |
|
|
| |
| unsigned v_plus_1 = v + 1u; |
| TEST_ASSERT_TRUE(v_plus_1 > v); |
| } |
|
|
| int main(void) { |
| UNITY_BEGIN(); |
| RUN_TEST(test_gz_intmax_equals_INT_MAX); |
| RUN_TEST(test_gz_intmax_matches_bit_calculation); |
| RUN_TEST(test_gz_intmax_is_consistent_across_calls); |
| RUN_TEST(test_gz_intmax_basic_properties); |
| return UNITY_END(); |
| } |