From: drh <> Date: Tue, 2 Dec 2025 18:37:49 +0000 (+0000) Subject: New test cases for QRF X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a0a63a0408d3d132940e35d8455021438d2f87bf;p=thirdparty%2Fsqlite.git New test cases for QRF FossilOrigin-Name: e49c63e31888c6787ab13f736d58ff985a24c3f98b475e05c30e8b244afffb80 --- diff --git a/ext/qrf/qrf.c b/ext/qrf/qrf.c index 1e3a3a44ba..82df33876c 100644 --- a/ext/qrf/qrf.c +++ b/ext/qrf/qrf.c @@ -537,13 +537,20 @@ static int qrfIsVt100(const unsigned char *z){ /* ** Return the length of a string in display characters. -** Multibyte UTF8 characters count as a single character -** for single-width characters, or as two characters for -** double-width characters. +** +** Most characters of the input string count as 1, including +** multi-byte UTF8 characters. However, zero-width unicode +** characters and VT100 escape sequences count as zero, and +** double-width characters count as two. +** +** The definition of "zero-width" and "double-width" characters +** is not precise. It depends on the output device, to some extent, +** and it varies according to the Unicode version. This routine +** makes the best guess that it can. */ -static int qrfDisplayLength(const char *zIn){ +size_t sqlite3_qrf_wcswidth(const char *zIn){ const unsigned char *z = (const unsigned char*)zIn; - int n = 0; + size_t n = 0; while( *z ){ if( z[0]<' ' ){ int k; @@ -2198,7 +2205,7 @@ static void qrfExplain(Qrf *p){ int len; if( i==nArg-1 ) w = 0; if( zVal==0 ) zVal = ""; - len = qrfDisplayLength(zVal); + len = (int)sqlite3_qrf_wcswidth(zVal); if( len>w ){ w = len; zSep = " "; @@ -2388,7 +2395,7 @@ static void qrfOneSimpleRow(Qrf *p){ int sz; p->u.sLine.azCol[i] = sqlite3_column_name(p->pStmt, i); if( p->u.sLine.azCol[i]==0 ) p->u.sLine.azCol[i] = "unknown"; - sz = qrfDisplayLength(p->u.sLine.azCol[i]); + sz = (int)sqlite3_qrf_wcswidth(p->u.sLine.azCol[i]); if( sz > p->u.sLine.mxColWth ) p->u.sLine.mxColWth = sz; } } diff --git a/ext/qrf/qrf.h b/ext/qrf/qrf.h index baaeb4b18d..5e28d1e9cd 100644 --- a/ext/qrf/qrf.h +++ b/ext/qrf/qrf.h @@ -176,13 +176,21 @@ int sqlite3_format_query_result( ** character c. For normal characters, the answer is always 1. But the ** estimate might be 0 or 2 for zero-width and double-width characters. ** -** Different display devices display unicode using different widths. So +** Different devices display unicode using different widths. So ** it is impossible to know that true display width with 100% accuracy. ** Inaccuracies in the width estimates might cause columns to be misaligned. ** Unfortunately, there is nothing we can do about that. */ int sqlite3_qrf_wcwidth(int c); +/* +** Return an estimate of the number of display columns used by the +** string in the argument. The width of individual characters is +** determined as for sqlite3_qrf_wcwidth(). VT100 escape code sequences +** are assigned a width of zero. +*/ +size_t sqlite3_qrf_wcswidth(const char*); + #ifdef __cplusplus } diff --git a/manifest b/manifest index 233728caf2..353c5bcf37 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sharmless\scompiler\swarning\sin\sthe\sprevious\scheck-in. -D 2025-12-02T15:01:29.826 +C New\stest\scases\sfor\sQRF +D 2025-12-02T18:37:49.618 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -418,8 +418,8 @@ F ext/misc/zipfile.c 09e6e3a3ff40a99677de3c0bc6569bd5f4709b1844ac3d1c1452a456c5a F ext/misc/zorder.c bddff2e1b9661a90c95c2a9a9c7ecd8908afab5763256294dd12d609d4664eee F ext/qrf/README.md 86fc5c3c5e3eddbe54fc1235cbdc52b8c2c0732791d224345c3014cd45c4c0e7 F ext/qrf/dev-notes.md e68a6d91ce4c7eb296ef2daadc2bb79c95c317ad15b9fafe40850c67b29c2430 -F ext/qrf/qrf.c 425d02cffcc5b5fe9ff5817794bf751b1fdd6912f570c354272429ce1262b866 -F ext/qrf/qrf.h 322d48537a5aa39c206c2ec0764a7938ea7662a8c25be1c4e9d742789609ba1e +F ext/qrf/qrf.c c50368ea2be3ab67bd6698d8b34bf70210d3fbf6b3659ed328543e5ec8d69eff +F ext/qrf/qrf.h 2cd7bd43579c522d3ae5c16034c7fdf41085684189811ae8e18ebc932a1cc79f F ext/rbu/rbu.c 801450b24eaf14440d8fd20385aacc751d5c9d6123398df41b1b5aa804bf4ce8 F ext/rbu/rbu1.test 25870dd7db7eb5597e2b4d6e29e7a7e095abf332660f67d89959552ce8f8f255 F ext/rbu/rbu10.test 7c22caa32c2ff26983ca8320779a31495a6555737684af7aba3daaf762ef3363 @@ -745,7 +745,7 @@ F src/sqliteInt.h a89c3a9296928dffcb4c287df176a739f9cf620c7c9d33aec59e8efb9b39cb F src/sqliteLimit.h 0a5516b4ec192a205c541e05f67009028a9451dc6678aae4cf8e68596903c246 F src/status.c 7565d63a79aa2f326339a24a0461a60096d0bd2bce711fefb50b5c89335f3592 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 -F src/tclsqlite.c ec2ad3fbf5390c3d4307bc9d1f2a37a9c5d726b5309769dc770ab37f6812152d +F src/tclsqlite.c 4b6f6b142b951a8a127e0cbd2e37284fc71f8e6a391ec8c6188fb831b51ec0b8 F src/tclsqlite.h 614b3780a62522bc9f8f2b9fb22689e8009958e7aa77e572d0f3149050af348a F src/test1.c 0e71fbcb484a271564e98e0158192c28c24f5521594218c3ba48bcb4cf634f91 F src/test2.c 62f0830958f9075692c29c6de51b495ae8969e1bef85f239ffcd9ba5fb44a5ff @@ -1515,6 +1515,8 @@ F test/qrf01.test 48c86e90f606739e67b73937babb662ef0edf1ede06954489c588815fa17b5 F test/qrf02.test 39b4afdc000bedccdafc0aecf17638df67a67aaa2d2942865ae6abcc48ba0e92 F test/qrf03.test ad7fa339fb46b26b08625f3a77a4827bdee9f0dad402d8ddc1fcb8f05aa64a54 F test/qrf04.test 0894692c998d2401dcc33449c02051b503ecce0c94217be54fb007c82d2d1379 +F test/qrf05.test 8ade5bfa7ef0b448e531687203fa8ae9ef41f1d7e4c11d5ba0c4846af75b13d5 +F test/qrf06.test 60ee6a77955a28ff7ab4e418ea71ca7ab8d24d993783a46ec0f7f4223174fabd F test/queryonly.test 5f653159e0f552f0552d43259890c1089391dcca F test/quick.test 1681febc928d686362d50057c642f77a02c62e57 F test/quickcheck.test a4b7e878cd97e46108291c409b0bf8214f29e18fddd68a42bc5c1375ad1fb80a @@ -2181,8 +2183,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P c872bd1ee7b219e055f40e43766e4ed6bc2d2ca8cb92577cd3560f4173b1f257 -R c46cfff780eeed3878512057a17d323b +P 601c40a1d9e1bcd9c453210c275001543d1533af25b4ccf399d5ef4ea1328950 +R db3be16f518798aa64811be276402ae9 U drh -Z 089d78bdb228ed07162c6c905e40e2c9 +Z c58c2647d0ec0d77cab1c57aa88aaed0 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index e700b2b785..0a563e0d5b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -601c40a1d9e1bcd9c453210c275001543d1533af25b4ccf399d5ef4ea1328950 +e49c63e31888c6787ab13f736d58ff985a24c3f98b475e05c30e8b244afffb80 diff --git a/src/tclsqlite.c b/src/tclsqlite.c index 3cedbf9c30..147a64745b 100644 --- a/src/tclsqlite.c +++ b/src/tclsqlite.c @@ -2361,6 +2361,10 @@ static int dbQrf(SqliteDb *pDb, int objc, Tcl_Obj *const*objv){ }else if( strcmp(zArg,"-null")==0 ){ qrf.zNull = Tcl_GetString(objv[i+1]); i++; + }else if( strcmp(zArg,"-version")==0 ){ + /* Undocumented. Testing use only */ + qrf.iVersion = atoi(Tcl_GetString(objv[i+1])); + i++; }else{ Tcl_AppendResult(pDb->interp, "unknown option: ", zArg, (char*)0); rc = TCL_ERROR; diff --git a/test/qrf05.test b/test/qrf05.test new file mode 100644 index 0000000000..0d5a4d7f94 --- /dev/null +++ b/test/qrf05.test @@ -0,0 +1,37 @@ +# 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) +# + +set testdir [file dirname $argv0] +source $testdir/tester.tcl +set testprefix qrf05 + +do_execsql_test 1.0 { + CREATE TABLE t1(a INT NOT NULL); +} +do_test 1.1 { + set rc [catch {db format -style list \ + {INSERT INTO t1 VALUES(123) RETURNING *}} msg] + list $rc [string trim $msg] +} {0 123} +do_test 1.2 { + set rc [catch {db format -style list \ + {INSERT INTO t1 VALUES(NULL) RETURNING *}} msg] + list $rc [string trim $msg] +} {1 {NOT NULL constraint failed: t1.a}} +do_test 1.3 { + set rc [catch {db format -version 99 {SELECT * FROM t1}} msg] + list $rc [string trim $msg] +} {1 {unusable sqlite3_qrf_spec.iVersion (99)}} + +finish_test diff --git a/test/qrf06.test b/test/qrf06.test new file mode 100644 index 0000000000..21cd7ac033 --- /dev/null +++ b/test/qrf06.test @@ -0,0 +1,576 @@ +# 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'), + ('རྫོང་ཁ'), + ('𐌲𐌿𐍄𐌹𐍃𐌺'), + ('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