v / vlib / builtin
Raw file | 78 loc (70 sloc) | 981 bytes | Latest commit hash 017ace6ea
1fn test_utf8_char_len() {
2 assert utf8_char_len(`a`) == 1
3 println(utf8_char_len(`a`))
4 s := 'п'
5 assert utf8_char_len(s[0]) == 2
6}
7
8fn test_utf8_wide_char() {
9 $if msvc {
10 // TODO: make this test pass msvc too
11 return
12 }
13 r := `✔`
14 s := '✔'
15 println('r: ${r}')
16 println('s: ${s}')
17 rstr := r.str()
18 println('rstr: ${rstr}')
19 assert utf8_char_len(r) == 1
20 assert utf8_char_len(s[0]) == 3
21 assert s == rstr
22 val := rstr.str
23 unsafe {
24 assert val[0].hex() == 'e2'
25 assert val[1].hex() == '9c'
26 assert val[2].hex() == '94'
27 }
28}
29
30fn test_to_wide_latin() {
31 s := 'abc 123'
32 w := s.to_wide()
33 unsafe {
34 assert w[0] == 97
35 assert w[1] == 98
36 assert w[2] == 99
37 assert w[3] == 32
38 assert w[4] == 49
39 assert w[5] == 50
40 assert w[6] == 51
41 assert w[7] == 0
42 }
43}
44
45fn test_to_wide_cyrillic() {
46 s := 'Проба'
47 w := s.to_wide()
48 unsafe {
49 assert w[0] == 1055
50 assert w[1] == 1088
51 assert w[2] == 1086
52 assert w[3] == 1073
53 assert w[4] == 1072
54 assert w[5] == 0
55 }
56}
57
58const wide_serial_number = [u8(67), 0, 76, 0, 52, 0, 54, 0, 73, 0, 49, 0, 65, 0, 48, 0, 48, 0,
59 54, 0, 52, 0, 57, 0, 0, 0, 0]
60
61const swide_serial_number = 'CL46I1A00649'
62
63fn test_string_from_wide() {
64 z := unsafe { string_from_wide(wide_serial_number.data) }
65 assert z == swide_serial_number
66}
67
68fn test_string_from_wide2() {
69 z := unsafe { string_from_wide2(wide_serial_number.data, 12) }
70 assert z == swide_serial_number
71}
72
73fn test_reverse_cyrillic_with_string_from_wide() {
74 s := 'Проба'
75 ws := s.to_wide()
76 z := unsafe { string_from_wide(ws) }
77 assert z == s
78}