v2 / vlib / builtin / rune_test.v
84 lines · 71 sloc · 2.26 KB · 59c8f6b07b0fcfaeb803e35b0fa44bf397bb1e01
Raw
1fn test_repeat() {
2 r1 := `V`
3 r2 := `👋`
4
5 assert r1.repeat(5) == 'VVVVV'
6 assert r2.repeat(5) == '👋👋👋👋👋'
7
8 assert r1.repeat(1) == r1.str()
9 assert r2.repeat(1) == r2.str()
10
11 assert r1.repeat(0) == ''
12 assert r2.repeat(0) == ''
13}
14
15fn test_length_in_bytes() {
16 assert rune(0x0).length_in_bytes() == 1
17 assert `A`.length_in_bytes() == 1 // latin letter
18 assert rune(0x7F).length_in_bytes() == 1
19
20 assert rune(0x80).length_in_bytes() == 2
21 assert `Д`.length_in_bytes() == 2 // cyrillic letter
22 assert rune(0x7FF).length_in_bytes() == 2
23
24 assert rune(0x800).length_in_bytes() == 3
25 assert `喂`.length_in_bytes() == 3 // hey
26 assert rune(0xFFFF).length_in_bytes() == 3
27
28 assert rune(0xD800).length_in_bytes() == -1 // min for surrogates
29 assert rune(0xD866).length_in_bytes() == -1 // invalid
30 assert rune(0xDFFF).length_in_bytes() == -1 // max for surrogates
31
32 assert rune(0x100000).length_in_bytes() == 4
33 assert rune(0x10FFD7).length_in_bytes() == 4 // "Supplementary Private Use Area-B" ¯\_(ツ)_/¯
34 assert rune(0x10FFFF).length_in_bytes() == 4
35
36 assert rune(0x110000).length_in_bytes() == -1
37}
38
39fn test_bytes() {
40 r1 := `★`
41 assert r1.bytes() == [u8(0xe2), 0x98, 0x85]
42}
43
44fn test_to_upper() {
45 assert `c`.to_upper() == `C`
46 assert `C`.to_upper() == `C`
47 assert `δ`.to_upper() == `Δ`
48 assert `Δ`.to_upper() == `Δ`
49 assert `ā`.to_upper() == `Ā`
50 assert `Ā`.to_upper() == `Ā`
51 assert `Я`.to_upper() == `Я`
52 assert `я`.to_upper() == `Я`
53 assert `Dž`.to_upper() == `DŽ`
54 assert `dž`.to_upper() == `DŽ`
55 assert `DŽ`.to_upper() == `DŽ`
56}
57
58fn test_to_lower() {
59 assert `C`.to_lower() == `c`
60 assert `c`.to_lower() == `c`
61 assert `Δ`.to_lower() == `δ`
62 assert `δ`.to_lower() == `δ`
63 assert `Ā`.to_lower() == `ā`
64 assert `ā`.to_lower() == `ā`
65 assert `я`.to_lower() == `я`
66 assert `Я`.to_lower() == `я`
67 assert `Dž`.to_lower() == `dž`
68 assert `DŽ`.to_lower() == `dž`
69 assert `dž`.to_lower() == `dž`
70}
71
72fn test_to_title() {
73 assert `c`.to_title() == `C`
74 assert `C`.to_title() == `C`
75 assert `δ`.to_title() == `Δ`
76 assert `Δ`.to_title() == `Δ`
77 assert `ā`.to_title() == `Ā`
78 assert `Ā`.to_title() == `Ā`
79 assert `я`.to_title() == `Я`
80 assert `Я`.to_title() == `Я`
81 assert `DŽ`.to_title() == `Dž`
82 assert `dž`.to_title() == `Dž`
83 assert `Dž`.to_title() == `Dž`
84}
85