blob: 5fa62c26f772eee5e70a6ad6fc4dae6d4d78e035 [file] [log] [blame]
# 2025-12-02
#
# The author disclaims copyright to this source code. In place of
# a legal notice, here is a blessing:
#
# May you do good and not evil.
# May you find forgiveness for yourself and forgive others.
# May you share freely, never taking more than you give.
#
#***********************************************************************
#
# Test cases for the Query Result Formatter (QRF), and especially
# the sqlite3_qrf_wcwidth() function and its utilization.
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix qrf06
# Data
db eval {
BEGIN TRANSACTION;
CREATE TABLE language(name TEXT);
INSERT INTO language(name) VALUES
('العربية'),
('Deutsch'),
('English'),
('Español'),
('فارسی'),
('Français'),
('Italiano'),
('مصرى'),
('Nederlands'),
('日本語'),
('Polski'),
('Português'),
('Sinugboanong Binisaya'),
('Svenska'),
('Українська'),
('Tiếng Việt'),
('Winaray'),
('中文'),
('Русский'),
('Afrikaans'),
('Shqip'),
('Asturianu'),
('Azərbaycanca'),
('Български'),
('閩南語 / Bân-lâm-gú'),
('বাংলা'),
('Беларуская'),
('Català'),
('Čeština'),
('Cymraeg'),
('Dansk'),
('Eesti'),
('Ελληνικά'),
('Esperanto'),
('Euskara'),
('Galego'),
('한국어'),
('Հայերեն'),
('हिन्दी'),
('Hrvatski'),
('Bahasa Indonesia'),
('עברית'),
('ქართული'),
('Ladin'),
('Latina'),
('Latviešu'),
('Lietuvių'),
('Magyar'),
('Македонски'),
('Malagasy'),
('मराठी'),
('Bahasa Melayu'),
('Bahaso Minangkabau'),
('မြန်မာဘာသာ'),
('Norskbokmålnynorsk'),
('Нохчийн'),
('Oʻzbekcha / Ўзбекча'),
('Қазақша / Qazaqşa / قازاقشا'),
('Română'),
('Simple English'),
('Slovenčina'),
('Slovenščina'),
('Српски / Srpski'),
('Srpskohrvatski / Српскохрватски'),
('Suomi'),
('Kiswahili'),
('தமிழ்'),
('Татарча / Tatarça'),
('తెలుగు'),
('ภาษาไทย'),
('Тоҷикӣ'),
('تۆرکجه'),
('Türkçe'),
('اردو'),
('粵語'),
('Bahsa Acèh'),
('Alemannisch'),
('አማርኛ'),
('Aragonés'),
('Արեւմտահայերէն'),
('Bahasa Hulontalo'),
('Basa Bali'),
('Bahasa Banjar'),
('Basa Banyumasan'),
('Башҡортса'),
('Беларуская (тарашкевіца)'),
('Bikol Central'),
('বিষ্ণুপ্রিয়া মণিপুরী'),
('Boarisch'),
('Bosanski'),
('Brezhoneg'),
('Чӑвашла'),
('Dagbanli'),
('الدارجة'),
('Diné Bizaad'),
('Emigliàn–Rumagnòl'),
('Fiji Hindi'),
('Føroyskt'),
('Frysk'),
('Fulfulde'),
('Gaeilge'),
('Gàidhlig'),
('گیلکی'),
('ગુજરાતી'),
('Hak-kâ-ngî / 客家語'),
('Hausa'),
('Hornjoserbsce'),
('Ido'),
('Igbo'),
('Ilokano'),
('Interlingua'),
('Interlingue'),
('Ирон'),
('Íslenska'),
('Jawa'),
('ಕನ್ನಡ'),
('Kapampangan'),
('ភាសាខ្មែរ'),
('Kotava'),
('Kreyòl Ayisyen'),
('Kurdî / كوردی'),
('کوردیی ناوەندی'),
('Кыргызча'),
('Кырык мары'),
('Lëtzebuergesch'),
('Lìgure'),
('Limburgs'),
('Lombard'),
('मैथिली'),
('മലയാളം'),
('მარგალური'),
('مازِرونی'),
('Mìng-dĕ̤ng-ngṳ̄ / 閩東語'),
('Монгол'),
('Napulitano'),
('नेपाल भाषा'),
('Nordfriisk'),
('Occitan'),
('Олык марий'),
('ଓଡି଼ଆ'),
('অসমীযা়'),
('ਪੰਜਾਬੀ'),
('پنجابی (شاہ مکھی)'),
('پښتو'),
('Piemontèis'),
('Plattdüütsch'),
('Qaraqalpaqsha'),
('Qırımtatarca'),
('Runa Simi'),
('Русиньскый'),
('संस्कृतम्'),
('ᱥᱟᱱᱛᱟᱲᱤ'),
('سرائیکی'),
('Саха Тыла'),
('Scots'),
('ChiShona'),
('Sicilianu'),
('සිංහල'),
('سنڌي'),
('Ślůnski'),
('Basa Sunda'),
('Taclḥit'),
('Tagalog'),
('ၽႃႇသႃႇတႆး'),
('ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ'),
('tolışi'),
('chiTumbuka'),
('Basa Ugi'),
('Vèneto'),
('Volapük'),
('Walon'),
('文言'),
('吴语'),
('ייִדיש'),
('Yorùbá'),
('Zazaki'),
('žemaitėška'),
('isiZulu'),
('नेपाली'),
('ꯃꯤꯇꯩ ꯂꯣꯟ'),
('Dzhudezmo / לאדינו'),
('Адыгэбзэ'),
('Ænglisc'),
('Anarâškielâ'),
('अंगिका'),
('Аԥсшәа'),
('armãneashti'),
('Arpitan'),
('atikamekw'),
('ܐܬܘܪܝܐ'),
('Avañe’ẽ'),
('Авар'),
('Aymar'),
('Batak Toba'),
('Betawi'),
('भोजपुरी'),
('Bislama'),
('བོད་ཡིག'),
('Буряад'),
('Chavacano de Zamboanga'),
('Chichewa'),
('Corsu'),
('Vahcuengh / 話僮'),
('Dagaare'),
('Davvisámegiella'),
('Deitsch'),
('ދިވެހިބަސް'),
('Dolnoserbski'),
('Dusun Bundu-liwan'),
('Эрзянь'),
('Estremeñu'),
('Eʋegbe'),
('Farefare'),
('Fɔ̀ngbè'),
('Furlan'),
('Gaelg'),
('Gagauz'),
('ГӀалгӀай'),
('Ghanaian Pidgin'),
('Gĩkũyũ'),
('赣语 / 贛語'),
('Gungbe'),
('Хальмг'),
('ʻŌlelo Hawaiʻi'),
('Ikinyarwanda'),
('Jaku Iban'),
('Kabɩyɛ'),
('Yerwa Kanuri'),
('Kaszëbsczi'),
('Kernewek'),
('Коми'),
('Перем коми'),
('Kongo'),
('कोंकणी / Konknni'),
('كٲشُر'),
('Kriyòl Gwiyannen'),
('Kumoring'),
('Kʋsaal'),
('ພາສາລາວ'),
('Лакку'),
('Latgaļu'),
('Лезги'),
('Li Niha'),
('Lingála'),
('Lingua Franca Nova'),
('livvinkarjala'),
('lojban'),
('Luganda'),
('Madhurâ'),
('Malti'),
('Mandailing'),
('Māori'),
('Mfantse'),
('Mirandés'),
('Мокшень'),
('ဘာသာ မန်'),
('Moore'),
('ߒߞߏ'),
('Na Vosa Vaka-Viti'),
('Nāhuatlahtōlli'),
('Naijá'),
('Nedersaksisch'),
('Nouormand / Normaund'),
('Novial'),
('Afaan Oromoo'),
('ပအိုဝ်ႏဘာႏသာႏ'),
('Pangasinán'),
('Pangcah'),
('Papiamentu'),
('Patois'),
('Pfälzisch'),
('Picard'),
('Къарачай–малкъар'),
('Ripoarisch'),
('Rumantsch'),
('Sakizaya'),
('Gagana Sāmoa'),
('Sardu'),
('Seediq'),
('Seeltersk'),
('Sesotho'),
('Sesotho sa Leboa'),
('Setswana'),
('ꠍꠤꠟꠐꠤ'),
('Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ'),
('Soomaaliga'),
('Sranantongo'),
('SiSwati'),
('Reo tahiti'),
('Taqbaylit'),
('Tarandíne'),
('Tayal'),
('Tetun'),
('Tok Pisin'),
('faka Tonga'),
('Türkmençe'),
('Twi'),
('Tyap'),
('Тыва дыл'),
('Удмурт'),
('ئۇيغۇرچه'),
('Vepsän'),
('võro'),
('West-Vlams'),
('Wolof'),
('isiXhosa'),
('Zeêuws'),
('алтай тил'),
('अवधी'),
('डोटेली'),
('ತುಳು'),
('ရခိုင်'),
('Bajau Sama'),
('Bamanankan'),
('Chamoru'),
('རྫོང་ཁ'),
('𐌲𐌿𐍄𐌹𐍃𐌺x'),
('Igala'),
('ᐃᓄᒃᑎᑐᑦ / Inuktitut'),
('Iñupiak'),
('isiNdebele seSewula'),
('Kalaallisut'),
('Nupe'),
('Obolo'),
('पालि'),
('pinayuanan'),
('Ποντιακά'),
('romani čhib'),
('Ikirundi'),
('руски'),
('Sängö'),
('ᥖᥭᥰᥖᥬᥳᥑᥨᥒᥰ'),
('ትግርኛ'),
('Thuɔŋjäŋ'),
('ᏣᎳᎩ'),
('Tsėhesenėstsestotse'),
('Xitsonga'),
('Tshivenḓa'),
('Wayuunaiki'),
('адыгабзэ');
COMMIT;
}
do_test 1.2 {
set res \n[db format -style box {
SELECT name, rowid AS id FROM language
WHERE length(name)=2
ORDER BY name
}]
set exp {
╭──────┬─────╮
name id
╞══════╪═════╡
中文 18
吴语 173
文言 172
粵語 75
╰──────┴─────╯
}
if {$res ne $exp} {
puts [list $res]
puts [list $exp]
}
string compare $res $exp
} {0}
do_test 1.3 {
set res \n[db format -style box {
SELECT name, rowid AS id FROM language
WHERE length(name)=3
ORDER BY name
}]
set exp {
╭────────┬─────╮
name id
╞════════╪═════╡
Ido 108
Twi 297
ߒߞߏ 258
ᏣᎳᎩ 335
日本語 10
한국어 37
╰────────┴─────╯
}
if {$res ne $exp} {
puts [list $res]
puts [list $exp]
}
string compare $res $exp
} {0}
do_test 1.4 {
set res \n[db format -style box {
SELECT name, rowid AS id FROM language
WHERE length(name)=4
ORDER BY name
}]
set exp {
╭──────┬─────╮
name id
╞══════╪═════╡
Igbo 109
Jawa 115
Nupe 323
Tyap 298
võro 303
Авар 192
Ирон 113
Коми 231
اردو 74
سنڌي 159
مصرى 8
پښتو 144
अवधी 309
पालि 325
ತುಳು 311
ትግርኛ 333
አማርኛ 78
╰──────┴─────╯
}
if {$res ne $exp} {
puts [list $res]
puts [list $exp]
}
string compare $res $exp
} {0}
do_test 1.5 {
set res \n[db format -style box {
SELECT name, rowid AS id FROM language
WHERE length(name)=5
ORDER BY name
}]
set exp {
╭───────┬─────╮
name id
╞═══════╪═════╡
Aymar 193
Corsu 202
Dansk 31
Eesti 32
Frysk 99
Gaelg 216
Hausa 106
Igala 318
Kongo 233
Ladin 44
Malti 250
Moore 257
Māori 252
Naijá 261
Obolo 324
Sardu 278
Scots 155
Shqip 21
Suomi 65
Sängö 331
Tayal 292
Tetun 293
Walon 171
Wolof 305
Лакку 240
Лезги 242
руски 330
עברית 42
فارسی 5
كٲشُر 235
گیلکی 103
मराठी 51
বাংলা 26
ଓଡି଼ଆ 140
தமிழ் 67
ಕನ್ನಡ 116
සිංහල 158
ꠍꠤꠟꠐꠤ 284
╰───────┴─────╯
}
if {$res ne $exp} {
puts [list $res]
puts [list $exp]
}
string compare $res $exp
} {0}
do_test 1.6 {
set res \n[db format -style box {
SELECT name, rowid AS id FROM language
WHERE length(name)=6
ORDER BY name
}]
set exp {
╭────────┬─────╮
name id
╞════════╪═════╡
Betawi 195
Català 28
Eʋegbe 212
Furlan 215
Gagauz 217
Galego 36
Gungbe 222
Gĩkũyũ 220
Kabɩyɛ 227
Kotava 119
Kʋsaal 238
Latina 45
Lìgure 126
Magyar 48
Novial 264
Patois 270
Picard 272
Polski 11
Română 59
Seediq 279
Türkçe 73
Vepsän 302
Vèneto 169
Yorùbá 175
Zazaki 176
Zeêuws 307
lojban 247
tolışi 166
Аԥсшәа 186
Буряад 199
Монгол 134
Тоҷикӣ 71
Удмурт 300
Хальмг 223
Эрзянь 210
ייִדיש 174
تۆرکجه 72
ܐܬܘܪܝܐ 190
अंगिका 185
डोटेली 310
नेपाली 179
मैथिली 129
हिन्दी 39
ਪੰਜਾਬੀ 142
తెలుగు 69
മലയാളം 130
རྫོང་ཁ 316
ရခိုင် 312
╰────────┴─────╯
}
if {$res ne $exp} {
puts [list $res]
puts [list $exp]
}
string compare $res $exp
} {0}
finish_test