aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMike FABIAN <mike.fabian@basyskom.de>2010-12-21 21:04:45 +0100
committerMike FABIAN <mike.fabian@basyskom.de>2010-12-23 19:20:37 +0100
commit99f38950598c0d30fa5c5a3b7cf2db1cd61316d1 (patch)
tree5c20284e4d5612961722c00b61a02e0f5c629a16 /tests
parentfec9f805becda5c7cd822d6e9c0ed963bed4580a (diff)
Changes: add MLocale::indexBucket()
RevBy: John Tapsell, Saki Uchiyama, Björn Schnabel Details: This is to make it possible to fix the sidebar problem in NB#211038 and other places where such sort buckets are used.
Diffstat (limited to 'tests')
-rw-r--r--tests/ft_locales/ft_locales.cpp224
-rw-r--r--tests/ft_locales/ft_locales.h3
2 files changed, 227 insertions, 0 deletions
diff --git a/tests/ft_locales/ft_locales.cpp b/tests/ft_locales/ft_locales.cpp
index 030825b0..edc3edba 100644
--- a/tests/ft_locales/ft_locales.cpp
+++ b/tests/ft_locales/ft_locales.cpp
@@ -1016,6 +1016,230 @@ void Ft_Locales::testMLocaleToUpper()
QCOMPARE(resultQt, expectedQt);
}
+
+void Ft_Locales::testMLocaleIndexBucket_data()
+{
+ QTest::addColumn<QString>("localeName");
+ QTest::addColumn<QString>("lcCollate");
+ QTest::addColumn<QStringList>("stringsSorted");
+ QTest::addColumn<QStringList>("expectedBuckets");
+
+ QTest::newRow("de_DE")
+ <<"ja_JP"
+ <<"de_DE"
+ <<(QStringList()<<"cote"<<"coté"<<"côte"<<"côté"<<"ö"<<"Ö"<<"öe"<<"Öe"<<"ÖE"<<"s"<<"S"<<"ß"<<"ẞ"<<"test"<<"Test"<<"z"<<"Z"<<"zx"<<"Zx"<<"ZX"<<"沙紀")
+ <<(QStringList()<<"C" <<"C" <<"C" <<"C" <<"O"<<"O"<<"O" <<"O" <<"O" <<"S"<<"S"<<"S"<<"S"<<"T" <<"T" <<"Z"<<"Z"<<"Z" <<"Z" <<"Z" <<"沙");
+ QTest::newRow("fr_FR")
+ <<"ja_JP"
+ <<"fr_FR"
+ <<(QStringList()<<"cote"<<"côte"<<"coté"<<"côté"<<"ö"<<"Ö"<<"öe"<<"Öe"<<"ÖE"<<"z"<<"Z"<<"zx"<<"Zx"<<"ZX"<<"沙紀")
+ <<(QStringList()<<"C" <<"C" <<"C" <<"C" <<"O"<<"O"<<"O" <<"O" <<"O" <<"Z"<<"Z"<<"Z" <<"Z" <<"Z" <<"沙");
+ QTest::newRow("cs_CZ")
+ <<"ja_JP"
+ <<"cs_CZ"
+ <<(QStringList()<<"c"<<"Cc"<<"CC"<<"č"<<"č"<<"Č"<<"h"<<"H"<<"ch"<<"cH"<<"Ch"<<"CH"<<"i"<<"I"<<"ů"<<"Ů"<<"α"<<"Α"<<"ワタシ"<<"沙紀")
+ <<(QStringList()<<"C"<<"C" <<"C" <<"Č"<<"Č"<<"Č"<<"H"<<"H"<<"CH"<<"CH"<<"CH"<<"CH"<<"I"<<"I"<<"U"<<"U"<<"Α"<<"Α"<<"ワ" <<"沙");
+ QTest::newRow("ar_SA")
+ <<"ja_JP"
+ <<"ar_SA"
+ <<(QStringList()<<"arabia"<<"zero"<<"ه")
+ <<(QStringList()<<"A" <<"Z" <<"ه");
+ QTest::newRow("fa_IR")
+ <<"ja_JP"
+ <<"fa_IR"
+ <<(QStringList()<<"ه")
+ <<(QStringList()<<"ه");
+ QTest::newRow("ja_JP@collation=standard")
+ <<"de_DE"
+ <<"ja_JP@collation=standard" // collation=standard is default for ja_JP
+ <<(QStringList()
+ <<"゙"<<"゛"<<"・"<<"﹅"<<"㈠"<<"㈱"<<"※"<<"∮"<<"♨"<<"〒"<<"ー"<<"ヾ"
+ <<"A"<<"john"<<"john"<<"John"<<"John"<<"saki"<<"saki"<<"Saki"<<"Saki"
+ <<"あ"<<"㋐"<<"い"<<"イ"<<"ゔ"<<"ヴ"<<"ゕ"<<"ヵ"
+ <<"か"<<"㋕"<<"ㇰ"<<"く"<<"ク"<<"ゖ"<<"ヶ"<<"㋘"<<"こ"<<"ご"<<"ご"<<"ヿ"
+ <<"さ"<<"㋚"<<"さき"<<"サキ"<<"じょん"<<"ジョン"<<"せ"<<"セ"<<"せ1"<<"セ1"<<"せ2"<<"セ2"<<"セあセ"<<"せいせ"
+ <<"た"<<"㋟"<<"っ"<<"ッ"<<"と"<<"ト"
+ <<"な"<<"ㇵ"
+ <<"は"<<"㋩"
+ <<"ま"
+ <<"や"
+ <<"ら"
+ <<"ヷ"<<"わたし"<<"ワタシ"
+ <<"ゐ"<<"ヰ"<<"ヸ"<<"ヹ"<<"を"<<"ヲ"<<"ヺ"<<"ん"<<"ン"
+ <<"ㄅ"
+ <<"ㄎ"
+ <<"一"<<"沙紀"<<"丁"<<"頻"<<"隆"<<"廳"<<"⼀"<<"㊀"<<"㆒"<<"龢"<<"㺃"<<"䵷")
+ <<(QStringList()
+ <<"゙"<<"゛"<<"・"<<"﹅"<<"㈠"<<"㈱"<<"※"<<"∮"<<"♨"<<"〒"<<"ー"<<"ヾ"
+ <<"A"<<"J"<<"J"<<"J"<<"J"<<"S"<<"S"<<"S"<<"S"
+ <<"あ"<<"あ"<<"あ"<<"あ"<<"あ"<<"あ"<<"あ"<<"あ"
+ <<"か"<<"か"<<"か"<<"か"<<"か"<<"か"<<"か"<<"か"<<"か"<<"か"<<"か"<<"か"
+ <<"さ"<<"さ"<<"さ"<<"さ"<<"さ"<<"さ"<<"さ"<<"さ"<<"さ"<<"さ"<<"さ"<<"さ"<<"さ"<<"さ"
+ <<"た"<<"た"<<"た"<<"た"<<"た"<<"た"
+ <<"な"<<"な"
+ <<"は"<<"は"
+ <<"ま"
+ <<"や"
+ <<"ら"
+ <<"わ"<<"わ"<<"わ"
+ <<"ゐ"<<"ヰ"<<"ヸ"<<"ヹ"<<"を"<<"ヲ"<<"ヺ"<<"ん"<<"ン"
+ <<"ㄅ"
+ <<"ㄎ"
+ <<"一"<<"沙"<<"丁"<<"頻"<<"隆"<<"廳"<<"⼀"<<"㊀"<<"㆒"<<"龢"<<"㺃"<<"䵷");
+ QTest::newRow("zh_TW@collation=stroke")
+ <<"ja_JP"
+ <<"zh_TW@collation=stroke" // collation=stroke is default for zh_TW
+ <<(QStringList()
+ <<"∮"<<"♨"
+ <<"A"<<"A"<<"john"<<"john"<<"John"<<"John"<<"saki"<<"saki"<<"Saki"<<"Saki"
+ <<"あ"
+ <<"ㄅ"
+ <<"ㄎ"
+ <<"一"<<"乙" // 1 stroke
+ <<"丁"<<"二" // 2
+ <<"三"<<"川" // 3
+ <<"丑"<<"木" // 4
+ <<"丙"<<"宁驰" // 5
+ <<"丞"<<"羊" // 6
+ <<"串"<<"君蘅 柳"<<"李"<<"沙紀" // 7
+ <<"並"<<"炒" // 8
+ <<"亟"<<"威"<<"柳" // 9
+ <<"乘"<<"髟" // 10
+ <<"乾"<<"雪" // 11
+ <<"傢"<<"隆" // 12
+ <<"亂"<<"罪" // 13
+ <<"僧"<<"蜻" // 14
+ <<"億"<<"蝙" // 15
+ <<"儒"<<"頻" // 16
+ <<"優"<<"曙" // 17
+ <<"叢"<<"鮹" // 18
+ <<"嚥"<<"譏" // 19
+ <<"勸"<<"霰"<<"襦" // 20
+ <<"儷"<<"驃" // 21
+ <<"儼"<<"龢" // 22
+ <<"囌"<<"鷲" // 23
+ <<"囑"<<"鷺" // 24
+ <<"廳" // 25 last official bucket
+ <<"躡" // 25
+ <<"鑽" // 27
+ <<"鬱" // 29
+ <<"驫" // 30
+ <<"⼀"<<"㊀"<<"㆒"<<"张威"<<"邉"<<"釡"<<"閇"<<"驰"<<"㺃"<<"䵷"
+ )
+ <<(QStringList()
+ <<"∮"<<"♨"
+ <<"A"<<"A"<<"J"<<"J"<<"J"<<"J"<<"S"<<"S"<<"S"<<"S"
+ <<"あ"
+ <<"ㄅ"
+ <<"ㄎ"
+ <<"一"<<"一" // 1 stroke
+ <<"丁"<<"丁" // 2
+ <<"三"<<"三" // 3
+ <<"丑"<<"丑" // 4
+ <<"丙"<<"丙" // 5
+ <<"丞"<<"丞" // 6
+ <<"串"<<"串"<<"串"<<"串" // 7
+ <<"並"<<"並" // 8
+ <<"亟"<<"亟"<<"亟" // 9
+ <<"乘"<<"乘" // 10
+ <<"乾"<<"乾" // 11
+ <<"傢"<<"傢" // 12
+ <<"亂"<<"亂" // 13
+ <<"僧"<<"僧" // 14
+ <<"億"<<"億" // 15
+ <<"儒"<<"儒" // 16
+ <<"優"<<"優" // 17
+ <<"叢"<<"叢" // 18
+ <<"嚥"<<"嚥" // 19
+ <<"勸"<<"勸"<<"勸" // 20
+ <<"儷"<<"儷" // 21
+ <<"儼"<<"儼" // 22
+ <<"囌"<<"囌" // 23
+ <<"囑"<<"囑" // 24
+ <<"廳" // 25 last official bucket
+ <<"躡" // 25
+ <<"鑽" // 27
+ <<"鬱" // 29
+ <<"驫" // 30
+ <<"⼀"<<"㊀"<<"㆒"<<"张"<<"邉"<<"釡"<<"閇"<<"驰"<<"㺃"<<"䵷"
+ );
+ QTest::newRow("zh_CN@collation=pinyin")
+ <<"ja_JP"
+ <<"zh_CN@collation=pinyin" // collation=pinyin is default for zh_CN
+ <<(QStringList()
+ <<"∮"<<"♨"
+ <<"A"<<"A"<<"john"<<"john"<<"John"<<"John"<<"saki"<<"saki"<<"Saki"<<"Saki"
+ <<"あ"
+ <<"ㄅ"
+ <<"ㄎ"
+ <<"阿" // a1
+ <<"驰" // chi2
+ <<"峠" // quia3 Japanese kokuji, mountain pass, variant of 卡
+ <<"蘅" // heng2
+ <<"君" // jun1
+ <<"卡" // ka3
+ <<"李" // li5
+ <<"柳" // liu3
+ <<"宁" // ning2
+ <<"威" // wei1
+ <<"张" // zhang1
+ )
+ <<(QStringList()
+ <<"∮"<<"♨"
+ <<"A"<<"A"<<"J"<<"J"<<"J"<<"J"<<"S"<<"S"<<"S"<<"S"
+ <<"あ"
+ <<"ㄅ"
+ <<"ㄎ"
+ <<"阿" // a1
+ <<"驰" // chi2
+ <<"峠" // qia3 Japanese kokuji, mountain pass, variant of 卡
+ <<"蘅" // heng2
+ <<"君" // jun1
+ <<"卡" // ka3
+ <<"李" // li5
+ <<"柳" // liu3
+ <<"宁" // ning2
+ <<"威" // wei1
+ <<"张" // zhang1
+ );
+}
+
+void Ft_Locales::testMLocaleIndexBucket()
+{
+ QFETCH(QString, localeName);
+ QFETCH(QString, lcCollate);
+ QFETCH(QStringList, stringsSorted);
+ QFETCH(QStringList, expectedBuckets);
+
+ QCOMPARE(MLocale::dataPaths(), (QStringList() << "/usr/share/meegotouch/icu"));
+ MLocale locale(localeName);
+ MLocale localeEn("en_US");
+ locale.setCategoryLocale(MLocale::MLcCollate, lcCollate);
+ QStringList stringsSortedCopy = stringsSorted;
+ qSort (stringsSortedCopy.begin(), stringsSortedCopy.end(),
+ localeEn.collator());
+ qSort (stringsSortedCopy.begin(), stringsSortedCopy.end(),
+ locale.collator());
+#if 1
+ QTextStream debugStream(stdout);
+ debugStream.setCodec("UTF-8");
+ debugStream << "\tlcCollate: " << lcCollate
+ << "\n\tbuckets\tbuckets\tstrings\tstrings"
+ << "\n\texpect \tfound \torig \tsorted\n";
+ for (int i = 0; i < stringsSorted.size(); ++i)
+ debugStream
+ << "\t" << expectedBuckets[i]
+ << "\t" << locale.indexBucket(stringsSorted[i])
+ << "\t" << stringsSorted[i]
+ << "\t" << stringsSortedCopy[i]
+ << "\n";
+#endif
+ QCOMPARE(stringsSortedCopy, stringsSorted);
+ for (int i = 0; i < stringsSorted.size(); ++i)
+ QCOMPARE(locale.indexBucket(stringsSorted[i]),
+ expectedBuckets[i]);
+}
+
/*
* To reduce the size of libicu, we customize the locale data included in
* our package of libicu and include only what needs to be there.
diff --git a/tests/ft_locales/ft_locales.h b/tests/ft_locales/ft_locales.h
index be97ffba..f2be75da 100644
--- a/tests/ft_locales/ft_locales.h
+++ b/tests/ft_locales/ft_locales.h
@@ -102,6 +102,9 @@ private slots:
void testMLocaleToUpper_data();
void testMLocaleToUpper();
+ void testMLocaleIndexBucket_data();
+ void testMLocaleIndexBucket();
+
void checkAvailableLocales();
};