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 }