v2 / vlib / builtin / wchar / wchar_test.v
41 lines · 35 sloc · 1.16 KB · 591e1964bb2460dca9f1bf9dc7f0b34f59f9fcbf
Raw
1import builtin.wchar
2
3const little_serial_number = [u16(67), 0, 76, 0, 52, 0, 54, 0, 73, 0, 49, 0, 65, 0, 48, 0, 48,
4 0, 54, 0, 52, 0, 57, 0, 0, 0, 0]
5const big_serial_number = [u16(0), 67, 0, 76, 0, 52, 0, 54, 0, 73, 0, 49, 0, 65, 0, 48, 0, 48,
6 0, 54, 0, 52, 0, 57, 0, 0, 0, 0]
7
8const wide_serial_number_windows = little_serial_number.map(u8(it))
9
10const swide_serial_number = 'CL46I1A00649'
11
12fn test_from_to_rune() {
13 for r in swide_serial_number.runes() {
14 c := wchar.from_rune(r)
15 assert c.to_rune() == r
16 }
17 assert wchar.from_rune(0).to_rune() == 0
18}
19
20fn test_to_string() {
21 mut p := voidptr(little_serial_number.data)
22 $if big_endian {
23 p = big_serial_number.data
24 }
25 $if windows {
26 p = wide_serial_number_windows.data
27 }
28 assert unsafe { wchar.length_in_characters(p) } == swide_serial_number.len
29 s := unsafe { wchar.to_string(p) }
30 dump(s)
31 assert s == swide_serial_number
32}
33
34fn test_from_string() {
35 x := wchar.from_string(swide_serial_number)
36 assert unsafe { x[0] } == wchar.from_rune(`C`)
37 assert unsafe { x[1] } == wchar.from_rune(`L`)
38 assert unsafe { x[2] } == wchar.from_rune(`4`)
39 assert unsafe { x[11] } == wchar.from_rune(`9`)
40 assert unsafe { x[12] } == wchar.zero
41}
42