File indexing completed on 2024-05-12 05:10:02
0001 /*************************************************************************** 0002 Copyright (C) 2017 Robby Stephenson <robby@periapsis.org> 0003 ***************************************************************************/ 0004 0005 /*************************************************************************** 0006 * * 0007 * This program is free software; you can redistribute it and/or * 0008 * modify it under the terms of the GNU General Public License as * 0009 * published by the Free Software Foundation; either version 2 of * 0010 * the License or (at your option) version 3 or any later version * 0011 * accepted by the membership of KDE e.V. (or its successor approved * 0012 * by the membership of KDE e.V.), which shall act as a proxy * 0013 * defined in Section 14 of version 3 of the license. * 0014 * * 0015 * This program is distributed in the hope that it will be useful, * 0016 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0018 * GNU General Public License for more details. * 0019 * * 0020 * You should have received a copy of the GNU General Public License * 0021 * along with this program. If not, see <http://www.gnu.org/licenses/>. * 0022 * * 0023 ***************************************************************************/ 0024 0025 #include "iso6937test.h" 0026 #include "../utils/iso6937converter.h" 0027 0028 #include <QTest> 0029 0030 #define QL1(x) QStringLiteral(x) 0031 #define QU8(x) QStringLiteral(x) 0032 0033 QTEST_APPLESS_MAIN( Iso6937Test ) 0034 0035 void Iso6937Test::testAscii() { 0036 QFETCH(QByteArray, input); 0037 QFETCH(QString, output); 0038 0039 QCOMPARE(Tellico::Iso6937Converter::toUtf8(input), output); 0040 } 0041 0042 // https://github.com/noophq/java-charset/blob/master/src/test/java/fr/noop/charset/iso6937/Iso6937CharsetDecoderTest.java 0043 void Iso6937Test::testAscii_data() { 0044 QTest::addColumn<QByteArray>("input"); 0045 QTest::addColumn<QString>("output"); 0046 0047 QTest::newRow("lowercase") << QByteArray("abcdefghijklmnopqrstuvwxyz") << QL1("abcdefghijklmnopqrstuvwxyz"); 0048 QTest::newRow("uppercase") << QByteArray("ABCDEFGHIJKLMNOPQRSTUVWXYZ") << QL1("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 0049 QTest::newRow("numbers") << QByteArray("1234567890") << QL1("1234567890"); 0050 QTest::newRow("symbols") << QByteArray("`-=[]\\;',./~!@#$%^&*()_+{}|:\"<>?") << QL1("`-=[]\\;',./~!@#$%^&*()_+{}|:\"<>?"); 0051 } 0052 0053 void Iso6937Test::testAccent() { 0054 QFETCH(QString, output); 0055 QFETCH(QByteArray, input); 0056 0057 QCOMPARE(Tellico::Iso6937Converter::toUtf8(input), output); 0058 } 0059 0060 // https://github.com/noophq/java-charset/blob/master/src/test/java/fr/noop/charset/iso6937/Iso6937CharsetDecoderTest.java 0061 void Iso6937Test::testAccent_data() { 0062 QTest::addColumn<QString>("output"); 0063 QTest::addColumn<QByteArray>("input"); 0064 0065 QTest::newRow("c141") << QU8("À") << QByteArray::fromHex("c141"); 0066 QTest::newRow("c145") << QU8("È") << QByteArray::fromHex("c145"); 0067 QTest::newRow("c149") << QU8("Ì") << QByteArray::fromHex("c149"); 0068 QTest::newRow("c14f") << QU8("Ò") << QByteArray::fromHex("c14f"); 0069 QTest::newRow("c155") << QU8("Ù") << QByteArray::fromHex("c155"); 0070 QTest::newRow("c161") << QU8("à") << QByteArray::fromHex("c161"); 0071 QTest::newRow("c165") << QU8("è") << QByteArray::fromHex("c165"); 0072 QTest::newRow("c169") << QU8("ì") << QByteArray::fromHex("c169"); 0073 QTest::newRow("c16f") << QU8("ò") << QByteArray::fromHex("c16f"); 0074 QTest::newRow("c175") << QU8("ù") << QByteArray::fromHex("c175"); 0075 QTest::newRow("c241") << QU8("Á") << QByteArray::fromHex("c241"); 0076 QTest::newRow("c243") << QU8("Ć") << QByteArray::fromHex("c243"); 0077 QTest::newRow("c245") << QU8("É") << QByteArray::fromHex("c245"); 0078 QTest::newRow("c249") << QU8("Í") << QByteArray::fromHex("c249"); 0079 QTest::newRow("c24c") << QU8("Ĺ") << QByteArray::fromHex("c24c"); 0080 QTest::newRow("c24e") << QU8("Ń") << QByteArray::fromHex("c24e"); 0081 QTest::newRow("c24f") << QU8("Ó") << QByteArray::fromHex("c24f"); 0082 QTest::newRow("c252") << QU8("Ŕ") << QByteArray::fromHex("c252"); 0083 QTest::newRow("c253") << QU8("Ś") << QByteArray::fromHex("c253"); 0084 QTest::newRow("c255") << QU8("Ú") << QByteArray::fromHex("c255"); 0085 QTest::newRow("c259") << QU8("Ý") << QByteArray::fromHex("c259"); 0086 QTest::newRow("c25a") << QU8("Ź") << QByteArray::fromHex("c25a"); 0087 QTest::newRow("c261") << QU8("á") << QByteArray::fromHex("c261"); 0088 QTest::newRow("c263") << QU8("ć") << QByteArray::fromHex("c263"); 0089 QTest::newRow("c265") << QU8("é") << QByteArray::fromHex("c265"); 0090 QTest::newRow("c269") << QU8("í") << QByteArray::fromHex("c269"); 0091 QTest::newRow("c26c") << QU8("ĺ") << QByteArray::fromHex("c26c"); 0092 QTest::newRow("c26e") << QU8("ń") << QByteArray::fromHex("c26e"); 0093 QTest::newRow("c26f") << QU8("ó") << QByteArray::fromHex("c26f"); 0094 QTest::newRow("c272") << QU8("ŕ") << QByteArray::fromHex("c272"); 0095 QTest::newRow("c273") << QU8("ś") << QByteArray::fromHex("c273"); 0096 QTest::newRow("c275") << QU8("ú") << QByteArray::fromHex("c275"); 0097 QTest::newRow("c279") << QU8("ý") << QByteArray::fromHex("c279"); 0098 QTest::newRow("c27a") << QU8("ź") << QByteArray::fromHex("c27a"); 0099 QTest::newRow("c341") << QU8("Â") << QByteArray::fromHex("c341"); 0100 QTest::newRow("c343") << QU8("Ĉ") << QByteArray::fromHex("c343"); 0101 QTest::newRow("c345") << QU8("Ê") << QByteArray::fromHex("c345"); 0102 QTest::newRow("c347") << QU8("Ĝ") << QByteArray::fromHex("c347"); 0103 QTest::newRow("c348") << QU8("Ĥ") << QByteArray::fromHex("c348"); 0104 QTest::newRow("c349") << QU8("Î") << QByteArray::fromHex("c349"); 0105 QTest::newRow("c34a") << QU8("Ĵ") << QByteArray::fromHex("c34a"); 0106 QTest::newRow("c34f") << QU8("Ô") << QByteArray::fromHex("c34f"); 0107 QTest::newRow("c353") << QU8("Ŝ") << QByteArray::fromHex("c353"); 0108 QTest::newRow("c355") << QU8("Û") << QByteArray::fromHex("c355"); 0109 QTest::newRow("c357") << QU8("Ŵ") << QByteArray::fromHex("c357"); 0110 QTest::newRow("c359") << QU8("Ŷ") << QByteArray::fromHex("c359"); 0111 QTest::newRow("c361") << QU8("â") << QByteArray::fromHex("c361"); 0112 QTest::newRow("c363") << QU8("ĉ") << QByteArray::fromHex("c363"); 0113 QTest::newRow("c365") << QU8("ê") << QByteArray::fromHex("c365"); 0114 QTest::newRow("c367") << QU8("ĝ") << QByteArray::fromHex("c367"); 0115 QTest::newRow("c368") << QU8("ĥ") << QByteArray::fromHex("c368"); 0116 QTest::newRow("c369") << QU8("î") << QByteArray::fromHex("c369"); 0117 QTest::newRow("c36a") << QU8("ĵ") << QByteArray::fromHex("c36a"); 0118 QTest::newRow("c36f") << QU8("ô") << QByteArray::fromHex("c36f"); 0119 QTest::newRow("c373") << QU8("ŝ") << QByteArray::fromHex("c373"); 0120 QTest::newRow("c375") << QU8("û") << QByteArray::fromHex("c375"); 0121 QTest::newRow("c377") << QU8("ŵ") << QByteArray::fromHex("c377"); 0122 QTest::newRow("c379") << QU8("ŷ") << QByteArray::fromHex("c379"); 0123 QTest::newRow("c441") << QU8("Ã") << QByteArray::fromHex("c441"); 0124 QTest::newRow("c449") << QU8("Ĩ") << QByteArray::fromHex("c449"); 0125 QTest::newRow("c44e") << QU8("Ñ") << QByteArray::fromHex("c44e"); 0126 QTest::newRow("c44f") << QU8("Õ") << QByteArray::fromHex("c44f"); 0127 QTest::newRow("c455") << QU8("Ũ") << QByteArray::fromHex("c455"); 0128 QTest::newRow("c461") << QU8("ã") << QByteArray::fromHex("c461"); 0129 QTest::newRow("c469") << QU8("ĩ") << QByteArray::fromHex("c469"); 0130 QTest::newRow("c46e") << QU8("ñ") << QByteArray::fromHex("c46e"); 0131 QTest::newRow("c46f") << QU8("õ") << QByteArray::fromHex("c46f"); 0132 QTest::newRow("c475") << QU8("ũ") << QByteArray::fromHex("c475"); 0133 QTest::newRow("c541") << QU8("Ā") << QByteArray::fromHex("c541"); 0134 QTest::newRow("c545") << QU8("Ē") << QByteArray::fromHex("c545"); 0135 QTest::newRow("c549") << QU8("Ī") << QByteArray::fromHex("c549"); 0136 QTest::newRow("c54f") << QU8("Ō") << QByteArray::fromHex("c54f"); 0137 QTest::newRow("c555") << QU8("Ū") << QByteArray::fromHex("c555"); 0138 QTest::newRow("c561") << QU8("ā") << QByteArray::fromHex("c561"); 0139 QTest::newRow("c565") << QU8("ē") << QByteArray::fromHex("c565"); 0140 QTest::newRow("c569") << QU8("ī") << QByteArray::fromHex("c569"); 0141 QTest::newRow("c56f") << QU8("ō") << QByteArray::fromHex("c56f"); 0142 QTest::newRow("c575") << QU8("ū") << QByteArray::fromHex("c575"); 0143 QTest::newRow("c641") << QU8("Ă") << QByteArray::fromHex("c641"); 0144 QTest::newRow("c647") << QU8("Ğ") << QByteArray::fromHex("c647"); 0145 QTest::newRow("c655") << QU8("Ŭ") << QByteArray::fromHex("c655"); 0146 QTest::newRow("c661") << QU8("ă") << QByteArray::fromHex("c661"); 0147 QTest::newRow("c667") << QU8("ğ") << QByteArray::fromHex("c667"); 0148 QTest::newRow("c675") << QU8("ŭ") << QByteArray::fromHex("c675"); 0149 QTest::newRow("c743") << QU8("Ċ") << QByteArray::fromHex("c743"); 0150 QTest::newRow("c745") << QU8("Ė") << QByteArray::fromHex("c745"); 0151 QTest::newRow("c747") << QU8("Ġ") << QByteArray::fromHex("c747"); 0152 QTest::newRow("c749") << QU8("İ") << QByteArray::fromHex("c749"); 0153 QTest::newRow("c75a") << QU8("Ż") << QByteArray::fromHex("c75a"); 0154 QTest::newRow("c763") << QU8("ċ") << QByteArray::fromHex("c763"); 0155 QTest::newRow("c765") << QU8("ė") << QByteArray::fromHex("c765"); 0156 QTest::newRow("c767") << QU8("ġ") << QByteArray::fromHex("c767"); 0157 QTest::newRow("c77a") << QU8("ż") << QByteArray::fromHex("c77a"); 0158 QTest::newRow("c841") << QU8("Ä") << QByteArray::fromHex("c841"); 0159 QTest::newRow("c845") << QU8("Ë") << QByteArray::fromHex("c845"); 0160 QTest::newRow("c849") << QU8("Ï") << QByteArray::fromHex("c849"); 0161 QTest::newRow("c84f") << QU8("Ö") << QByteArray::fromHex("c84f"); 0162 QTest::newRow("c855") << QU8("Ü") << QByteArray::fromHex("c855"); 0163 QTest::newRow("c859") << QU8("Ÿ") << QByteArray::fromHex("c859"); 0164 QTest::newRow("c861") << QU8("ä") << QByteArray::fromHex("c861"); 0165 QTest::newRow("c865") << QU8("ë") << QByteArray::fromHex("c865"); 0166 QTest::newRow("c869") << QU8("ï") << QByteArray::fromHex("c869"); 0167 QTest::newRow("c86f") << QU8("ö") << QByteArray::fromHex("c86f"); 0168 QTest::newRow("c875") << QU8("ü") << QByteArray::fromHex("c875"); 0169 QTest::newRow("c879") << QU8("ÿ") << QByteArray::fromHex("c879"); 0170 QTest::newRow("ca41") << QU8("Å") << QByteArray::fromHex("ca41"); 0171 QTest::newRow("ca55") << QU8("Ů") << QByteArray::fromHex("ca55"); 0172 QTest::newRow("ca61") << QU8("å") << QByteArray::fromHex("ca61"); 0173 QTest::newRow("ca75") << QU8("ů") << QByteArray::fromHex("ca75"); 0174 QTest::newRow("cb43") << QU8("Ç") << QByteArray::fromHex("cb43"); 0175 QTest::newRow("cb47") << QU8("Ģ") << QByteArray::fromHex("cb47"); 0176 QTest::newRow("cb4b") << QU8("Ķ") << QByteArray::fromHex("cb4b"); 0177 QTest::newRow("cb4c") << QU8("Ļ") << QByteArray::fromHex("cb4c"); 0178 QTest::newRow("cb4e") << QU8("Ņ") << QByteArray::fromHex("cb4e"); 0179 QTest::newRow("cb52") << QU8("Ŗ") << QByteArray::fromHex("cb52"); 0180 QTest::newRow("cb53") << QU8("Ş") << QByteArray::fromHex("cb53"); 0181 QTest::newRow("cb54") << QU8("Ţ") << QByteArray::fromHex("cb54"); 0182 QTest::newRow("cb63") << QU8("ç") << QByteArray::fromHex("cb63"); 0183 QTest::newRow("cb67") << QU8("ģ") << QByteArray::fromHex("cb67"); 0184 QTest::newRow("cb6b") << QU8("ķ") << QByteArray::fromHex("cb6b"); 0185 QTest::newRow("cb6c") << QU8("ļ") << QByteArray::fromHex("cb6c"); 0186 QTest::newRow("cb6e") << QU8("ņ") << QByteArray::fromHex("cb6e"); 0187 QTest::newRow("cb72") << QU8("ŗ") << QByteArray::fromHex("cb72"); 0188 QTest::newRow("cb73") << QU8("ş") << QByteArray::fromHex("cb73"); 0189 QTest::newRow("cb74") << QU8("ţ") << QByteArray::fromHex("cb74"); 0190 QTest::newRow("cd4f") << QU8("Ő") << QByteArray::fromHex("cd4f"); 0191 QTest::newRow("cd55") << QU8("Ű") << QByteArray::fromHex("cd55"); 0192 QTest::newRow("cd6f") << QU8("ő") << QByteArray::fromHex("cd6f"); 0193 QTest::newRow("cd75") << QU8("ű") << QByteArray::fromHex("cd75"); 0194 QTest::newRow("ce41") << QU8("Ą") << QByteArray::fromHex("ce41"); 0195 QTest::newRow("ce45") << QU8("Ę") << QByteArray::fromHex("ce45"); 0196 QTest::newRow("ce49") << QU8("Į") << QByteArray::fromHex("ce49"); 0197 QTest::newRow("ce55") << QU8("Ų") << QByteArray::fromHex("ce55"); 0198 QTest::newRow("ce61") << QU8("ą") << QByteArray::fromHex("ce61"); 0199 QTest::newRow("ce65") << QU8("ę") << QByteArray::fromHex("ce65"); 0200 QTest::newRow("ce69") << QU8("į") << QByteArray::fromHex("ce69"); 0201 QTest::newRow("ce75") << QU8("ų") << QByteArray::fromHex("ce75"); 0202 QTest::newRow("cf43") << QU8("Č") << QByteArray::fromHex("cf43"); 0203 QTest::newRow("cf44") << QU8("Ď") << QByteArray::fromHex("cf44"); 0204 QTest::newRow("cf45") << QU8("Ě") << QByteArray::fromHex("cf45"); 0205 QTest::newRow("cf4c") << QU8("Ľ") << QByteArray::fromHex("cf4c"); 0206 QTest::newRow("cf4e") << QU8("Ň") << QByteArray::fromHex("cf4e"); 0207 QTest::newRow("cf52") << QU8("Ř") << QByteArray::fromHex("cf52"); 0208 QTest::newRow("cf53") << QU8("Š") << QByteArray::fromHex("cf53"); 0209 QTest::newRow("cf54") << QU8("Ť") << QByteArray::fromHex("cf54"); 0210 QTest::newRow("cf5a") << QU8("Ž") << QByteArray::fromHex("cf5a"); 0211 QTest::newRow("cf63") << QU8("č") << QByteArray::fromHex("cf63"); 0212 QTest::newRow("cf64") << QU8("ď") << QByteArray::fromHex("cf64"); 0213 QTest::newRow("cf65") << QU8("ě") << QByteArray::fromHex("cf65"); 0214 QTest::newRow("cf6c") << QU8("ľ") << QByteArray::fromHex("cf6c"); 0215 QTest::newRow("cf6e") << QU8("ň") << QByteArray::fromHex("cf6e"); 0216 QTest::newRow("cf72") << QU8("ř") << QByteArray::fromHex("cf72"); 0217 QTest::newRow("cf73") << QU8("š") << QByteArray::fromHex("cf73"); 0218 QTest::newRow("cf74") << QU8("ť") << QByteArray::fromHex("cf74"); 0219 QTest::newRow("cf7a") << QU8("ž") << QByteArray::fromHex("cf7a"); 0220 QTest::newRow("a8") << QU8("¤") << QByteArray::fromHex("a8"); 0221 QTest::newRow("d2") << QU8("®") << QByteArray::fromHex("d2"); 0222 QTest::newRow("d3") << QU8("©") << QByteArray::fromHex("d3"); 0223 QTest::newRow("d6") << QU8("¬") << QByteArray::fromHex("d6"); 0224 QTest::newRow("d7") << QU8("¦") << QByteArray::fromHex("d7"); 0225 QTest::newRow("e3") << QU8("ª") << QByteArray::fromHex("e3"); 0226 QTest::newRow("ff") << QU8("\u00ad") << QByteArray::fromHex("ff"); 0227 }