577 lines
14 KiB
Plaintext
577 lines
14 KiB
Plaintext
# 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
|