builtin: fix assert "ä ö å æ ã ø ô é ë".title() == "Ä Ö Å Æ Ã Ø Ô É Ë" (fix #25017) (#25026)

This commit is contained in:
Delyan Angelov 2025-08-02 14:03:28 +03:00 committed by GitHub
parent 198ecd09bc
commit b628626923
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 11 deletions

View File

@ -1702,13 +1702,14 @@ pub fn (s string) capitalize() string {
if s.len == 0 {
return ''
}
s0 := s[0]
letter := s0.ascii_str()
uletter := letter.to_upper()
if s.len == 1 {
return uletter
return s[0].ascii_str().to_upper()
}
srest := s[1..]
r := s.runes()
letter := r[0].str()
uletter := letter.to_upper()
rrest := r[1..]
srest := rrest.string()
res := uletter + srest
return res
}
@ -1720,14 +1721,15 @@ pub fn (s string) uncapitalize() string {
if s.len == 0 {
return ''
}
s0 := s[0]
letter := s0.ascii_str()
uletter := letter.to_lower()
if s.len == 1 {
return uletter
return s[0].ascii_str().to_lower()
}
srest := s[1..]
res := uletter + srest
r := s.runes()
letter := r[0].str()
lletter := letter.to_lower()
rrest := r[1..]
srest := rrest.string()
res := lletter + srest
return res
}

View File

@ -1153,6 +1153,9 @@ fn test_runes_to_lower() {
}
fn test_capitalize() {
assert ''.capitalize() == ''
assert 'a'.capitalize() == 'A'
assert 'A'.capitalize() == 'A'
mut s := 'hello'
assert !s.is_capital()
assert s.capitalize() == 'Hello'
@ -1172,6 +1175,20 @@ fn test_capitalize() {
assert s.is_capital()
assert s.capitalize() == 'Test it'
assert 'GameMission_t'.capitalize() == 'GameMission_t'
assert 'чорба'.capitalize() == 'Чорба'
assert 'ä ö å æ ã ø ô é ë'.title() == 'Ä Ö Å Æ Ã Ø Ô É Ë'
}
fn test_uncapitalize() {
assert ''.uncapitalize() == ''
assert 'a'.uncapitalize() == 'a'
assert 'A'.uncapitalize() == 'a'
assert 'hello'.uncapitalize() == 'hello'
assert 'Hello'.uncapitalize() == 'hello'
assert 'HELLO'.uncapitalize() == 'hELLO'
assert 'чорба'.uncapitalize() == 'чорба'
assert 'Чорба'.uncapitalize() == 'чорба'
assert 'ЧОРБА'.uncapitalize() == 'чОРБА'
}
fn test_title() {
@ -1184,6 +1201,7 @@ fn test_title() {
s = 'Hello World'
assert s.is_title()
assert s.title() == 'Hello World'
assert 'пет корита ябълки'.title() == 'Пет Корита Ябълки'
}
fn test_for_loop() {