1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
(* TEST *)
let assert_raise_invalid_argument f v =
assert (try ignore (f v); false with Invalid_argument _ -> true)
let test_constants () =
assert (Char.equal Char.Ascii.min '\x00');
assert (Char.equal Char.Ascii.max '\x7F');
()
let test_is_valid () =
assert (not (Char.Ascii.is_valid '\x80'));
assert (Char.Ascii.is_valid '\x00');
assert (Char.Ascii.is_valid '\x7F');
assert (Char.Ascii.is_valid 'a');
()
let test_preds () =
assert (Char.Ascii.is_upper 'A');
assert (not (Char.Ascii.is_upper 'z'));
assert (Char.Ascii.is_lower 'z');
assert (not (Char.Ascii.is_lower 'A'));
assert (Char.Ascii.is_letter 'A');
assert (Char.Ascii.is_letter 'z');
assert (not (Char.Ascii.is_letter '1'));
assert (Char.Ascii.is_alphanum 'A');
assert (Char.Ascii.is_alphanum 'z');
assert (Char.Ascii.is_alphanum '1');
assert (not (Char.Ascii.is_alphanum '.'));
assert (Char.Ascii.is_white ' ');
assert (not (Char.Ascii.is_white 'a'));
assert (Char.Ascii.is_blank ' ');
assert (not (Char.Ascii.is_blank '\n'));
assert (Char.Ascii.is_graphic 'a');
assert (Char.Ascii.is_graphic '.');
assert (not (Char.Ascii.is_graphic ' '));
assert (Char.Ascii.is_print 'a');
assert (Char.Ascii.is_print '.');
assert (Char.Ascii.is_print ' ');
assert (not (Char.Ascii.is_print '\n'));
assert (Char.Ascii.is_control '\n');
assert (Char.Ascii.is_control '\x7F');
assert (not (Char.Ascii.is_control ' '));
()
let test_decimal () =
assert (Char.Ascii.is_digit '0');
assert (not (Char.Ascii.is_digit 'A'));
assert (Char.Ascii.digit_to_int '5' = 5);
assert (Char.Ascii.digit_to_int '9' = 9);
assert_raise_invalid_argument Char.Ascii.digit_to_int 'A';
assert (Char.Ascii.digit_of_int 5 = '5');
assert (Char.Ascii.digit_of_int (-5) = '5');
assert (Char.Ascii.digit_of_int 9 = '9');
assert (Char.Ascii.digit_of_int (-9) = '9');
assert (Char.Ascii.digit_of_int 10 = '0');
assert (Char.Ascii.digit_of_int (-10) = '0');
assert (Char.Ascii.digit_of_int 112 = '2');
assert (Char.Ascii.digit_of_int (-112) = '2');
()
let test_hexadecimal () =
assert (Char.Ascii.is_hex_digit '0');
assert (Char.Ascii.is_hex_digit 'A');
assert (Char.Ascii.is_hex_digit 'a');
assert (Char.Ascii.is_hex_digit 'F');
assert (Char.Ascii.is_hex_digit 'f');
assert (not (Char.Ascii.is_hex_digit 'G'));
assert (not (Char.Ascii.is_hex_digit 'g'));
assert (Char.Ascii.hex_digit_to_int '5' = 5);
assert (Char.Ascii.hex_digit_to_int 'f' = 0xF);
assert (Char.Ascii.hex_digit_to_int 'F' = 0xF);
assert (Char.Ascii.hex_digit_to_int 'a' = 0xA);
assert (Char.Ascii.hex_digit_to_int 'A' = 0xA);
assert (Char.Ascii.hex_digit_to_int 'd' = 0xD);
assert_raise_invalid_argument Char.Ascii.hex_digit_to_int 'g';
assert_raise_invalid_argument Char.Ascii.hex_digit_to_int 'G';
assert_raise_invalid_argument Char.Ascii.hex_digit_to_int 'z';
assert (Char.Ascii.lower_hex_digit_of_int 5 = '5');
assert (Char.Ascii.lower_hex_digit_of_int (-5) = '5');
assert (Char.Ascii.lower_hex_digit_of_int 10 = 'a');
assert (Char.Ascii.lower_hex_digit_of_int (-10) = 'a');
assert (Char.Ascii.lower_hex_digit_of_int 15 = 'f');
assert (Char.Ascii.lower_hex_digit_of_int (-15) = 'f');
assert (Char.Ascii.lower_hex_digit_of_int 16 = '0');
assert (Char.Ascii.lower_hex_digit_of_int (-16) = '0');
assert (Char.Ascii.lower_hex_digit_of_int (255) = 'f');
assert (Char.Ascii.lower_hex_digit_of_int (-255) = 'f');
assert (Char.Ascii.lower_hex_digit_of_int 0x77 = '7');
assert (Char.Ascii.lower_hex_digit_of_int 0x7A = 'a');
assert (Char.Ascii.lower_hex_digit_of_int 0xB = 'b');
assert (Char.Ascii.lower_hex_digit_of_int 0x2 = '2');
assert (Char.Ascii.upper_hex_digit_of_int 5 = '5');
assert (Char.Ascii.upper_hex_digit_of_int (-5) = '5');
assert (Char.Ascii.upper_hex_digit_of_int 10 = 'A');
assert (Char.Ascii.upper_hex_digit_of_int (-10) = 'A');
assert (Char.Ascii.upper_hex_digit_of_int 15 = 'F');
assert (Char.Ascii.upper_hex_digit_of_int (-15) = 'F');
assert (Char.Ascii.upper_hex_digit_of_int 16 = '0');
assert (Char.Ascii.upper_hex_digit_of_int (-16) = '0');
assert (Char.Ascii.upper_hex_digit_of_int (255) = 'F');
assert (Char.Ascii.upper_hex_digit_of_int (-255) = 'F');
assert (Char.Ascii.upper_hex_digit_of_int 0x77 = '7');
assert (Char.Ascii.upper_hex_digit_of_int 0x7A = 'A');
assert (Char.Ascii.upper_hex_digit_of_int 0xB = 'B');
assert (Char.Ascii.upper_hex_digit_of_int 0x2 = '2');
()
let test_case_mappings () =
assert (Char.Ascii.uppercase 'a' = 'A');
assert (Char.Ascii.uppercase 'g' = 'G');
assert (Char.Ascii.uppercase 'Z' = 'Z');
assert (Char.Ascii.uppercase '\n' = '\n');
assert (Char.Ascii.lowercase 'A' = 'a');
assert (Char.Ascii.lowercase 'G' = 'g');
assert (Char.Ascii.lowercase 'z' = 'z');
assert (Char.Ascii.lowercase '\n' = '\n');
()
let tests () =
test_constants ();
test_is_valid ();
test_preds ();
test_decimal ();
test_hexadecimal ();
test_case_mappings();
()
let () =
tests ();
print_endline "OK"
|