File: test.ml

package info (click to toggle)
ocaml 5.4.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 44,372 kB
  • sloc: ml: 370,196; ansic: 52,820; sh: 27,396; asm: 5,462; makefile: 3,679; python: 974; awk: 278; javascript: 273; perl: 59; fortran: 21; cs: 9
file content (132 lines) | stat: -rw-r--r-- 5,039 bytes parent folder | download | duplicates (2)
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"