diff --git a/src/t_parser.c b/src/t_parser.c index a4e7d90065907191f4678dbd0ebc7f17ec7bfcda..72a3f66e772e629d2b37cb2c5b2cce718d698967 100644 --- a/src/t_parser.c +++ b/src/t_parser.c @@ -25,6 +25,9 @@ static void test_ch_range(gconstpointer backend) { const HParser *range_2 = h_ch_range('a', 'z'); const HParser *range_3 = h_ch_range('A', 'z'); const HParser *range_all = h_ch_range(0, 255); + const HParser *range_left = h_ch_range(0, 64); + const HParser *range_right = h_ch_range(224, 255); + unsigned char tmp[2]; g_check_parse_match(range_1, (HParserBackend)GPOINTER_TO_INT(backend), "b", 1, "u0x62"); g_check_parse_failed(range_1, (HParserBackend)GPOINTER_TO_INT(backend), "d", 1); @@ -34,6 +37,15 @@ static void test_ch_range(gconstpointer backend) { g_check_parse_failed(range_3, (HParserBackend)GPOINTER_TO_INT(backend), "2", 1); /* range_all never fails anything */ g_check_parse_match(range_all, (HParserBackend)GPOINTER_TO_INT(backend), "B", 1, "u0x42"); + tmp[1] = '\0'; + tmp[0] = 32; + g_check_parse_match(range_left, (HParserBackend)GPOINTER_TO_INT(backend), tmp, 1, "u0x20"); + tmp[0] = 128; + g_check_parse_failed(range_left, (HParserBackend)GPOINTER_TO_INT(backend), tmp, 1); + tmp[0] = 240; + g_check_parse_match(range_right, (HParserBackend)GPOINTER_TO_INT(backend), tmp, 1, "u0xf0"); + tmp[0] = 128; + g_check_parse_failed(range_right, (HParserBackend)GPOINTER_TO_INT(backend), tmp, 1); } //@MARK_START