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