pcre2 / tests /tests_pcre2_compile_class_get_highest_char.c
AryaWu's picture
Upload folder using huggingface_hub
864071c verified
#include "unity/unity.h"
#define PCRE2_CODE_UNIT_WIDTH 8
#include "pcre2.h"
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
/* External test wrapper provided in the module under test */
extern uint32_t test_get_highest_char(uint32_t options);
void setUp(void) {
/* Setup code here, or leave empty */
}
void tearDown(void) {
/* Cleanup code here, or leave empty */
}
/* For PCRE2_CODE_UNIT_WIDTH == 8, get_highest_char should always return
0x10FFFF (MAX_UTF_CODE_POINT), regardless of options. */
static const uint32_t EXPECTED_MAX = 0x10FFFFu;
void test_get_highest_char_zero_options(void) {
uint32_t result = test_get_highest_char(0u);
TEST_ASSERT_EQUAL_HEX32(EXPECTED_MAX, result);
}
void test_get_highest_char_with_low_bit_set(void) {
/* Simulate a flag bit set (e.g., similar to PARSE_CLASS_UTF). */
uint32_t result = test_get_highest_char(0x00000001u);
TEST_ASSERT_EQUAL_HEX32(EXPECTED_MAX, result);
}
void test_get_highest_char_with_random_bits(void) {
uint32_t result1 = test_get_highest_char(0x12345678u);
uint32_t result2 = test_get_highest_char(0x00F0F0F0u);
TEST_ASSERT_EQUAL_HEX32(EXPECTED_MAX, result1);
TEST_ASSERT_EQUAL_HEX32(EXPECTED_MAX, result2);
}
void test_get_highest_char_with_all_bits_set(void) {
uint32_t result = test_get_highest_char(0xFFFFFFFFu);
TEST_ASSERT_EQUAL_HEX32(EXPECTED_MAX, result);
}
void test_get_highest_char_sanity_greater_than_bmp(void) {
/* Ensure it's above 0xFFFF, i.e., truly UTF max code point */
uint32_t result = test_get_highest_char(0u);
TEST_ASSERT_TRUE(result > 0xFFFFu);
TEST_ASSERT_EQUAL_HEX32(EXPECTED_MAX, result);
}
int main(void) {
UNITY_BEGIN();
RUN_TEST(test_get_highest_char_zero_options);
RUN_TEST(test_get_highest_char_with_low_bit_set);
RUN_TEST(test_get_highest_char_with_random_bits);
RUN_TEST(test_get_highest_char_with_all_bits_set);
RUN_TEST(test_get_highest_char_sanity_greater_than_bmp);
return UNITY_END();
}