v/vlib/builtin/rune_test.v

85 lines
2.3 KiB
V

fn test_repeat() {
r1 := `V`
r2 := `👋`
assert r1.repeat(5) == 'VVVVV'
assert r2.repeat(5) == '👋👋👋👋👋'
assert r1.repeat(1) == r1.str()
assert r2.repeat(1) == r2.str()
assert r1.repeat(0) == ''
assert r2.repeat(0) == ''
}
fn test_length_in_bytes() {
assert rune(0x0).length_in_bytes() == 1
assert `A`.length_in_bytes() == 1 // latin letter
assert rune(0x7F).length_in_bytes() == 1
assert rune(0x80).length_in_bytes() == 2
assert `Д`.length_in_bytes() == 2 // cyrillic letter
assert rune(0x7FF).length_in_bytes() == 2
assert rune(0x800).length_in_bytes() == 3
assert ``.length_in_bytes() == 3 // hey
assert rune(0xFFFF).length_in_bytes() == 3
assert rune(0xD800).length_in_bytes() == -1 // min for surrogates
assert rune(0xD866).length_in_bytes() == -1 // invalid
assert rune(0xDFFF).length_in_bytes() == -1 // max for surrogates
assert rune(0x100000).length_in_bytes() == 4
assert rune(0x10FFD7).length_in_bytes() == 4 // "Supplementary Private Use Area-B" ¯\_(ツ)_/¯
assert rune(0x10FFFF).length_in_bytes() == 4
assert rune(0x110000).length_in_bytes() == -1
}
fn test_bytes() {
r1 := ``
assert r1.bytes() == [u8(0xe2), 0x98, 0x85]
}
fn test_to_upper() {
assert `c`.to_upper() == `C`
assert `C`.to_upper() == `C`
assert `δ`.to_upper() == `Δ`
assert `Δ`.to_upper() == `Δ`
assert `ā`.to_upper() == `Ā`
assert `Ā`.to_upper() == `Ā`
assert `Я`.to_upper() == `Я`
assert `я`.to_upper() == `Я`
assert `Dž`.to_upper() == `DŽ`
assert `dž`.to_upper() == `DŽ`
assert `DŽ`.to_upper() == `DŽ`
}
fn test_to_lower() {
assert `C`.to_lower() == `c`
assert `c`.to_lower() == `c`
assert `Δ`.to_lower() == `δ`
assert `δ`.to_lower() == `δ`
assert `Ā`.to_lower() == `ā`
assert `ā`.to_lower() == `ā`
assert `я`.to_lower() == `я`
assert `Я`.to_lower() == `я`
assert `Dž`.to_lower() == `dž`
assert `DŽ`.to_lower() == `dž`
assert `dž`.to_lower() == `dž`
}
fn test_to_title() {
assert `c`.to_title() == `C`
assert `C`.to_title() == `C`
assert `δ`.to_title() == `Δ`
assert `Δ`.to_title() == `Δ`
assert `ā`.to_title() == `Ā`
assert `Ā`.to_title() == `Ā`
assert `я`.to_title() == `Я`
assert `Я`.to_title() == `Я`
assert `DŽ`.to_title() == `Dž`
assert `dž`.to_title() == `Dž`
assert `Dž`.to_title() == `Dž`
}