File indexing completed on 2024-05-12 17:21:02

0001 // SPDX-FileCopyrightText: 2020 Han Young <hanyoung@protonmail.com>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 #include <QTest>
0005 
0006 #include "inputmanager.h"
0007 
0008 class InputManagerTest : public QObject
0009 {
0010     Q_OBJECT
0011 
0012 private Q_SLOTS:
0013     void init();
0014     void testAddition();
0015     void testMultiplication();
0016     void testDivision();
0017     void testNonIntegerDivision();
0018 };
0019 
0020 #ifndef Q_OS_WIN
0021 void initLocale()
0022 {
0023     setenv("LC_ALL", LANG, 1);
0024 }
0025 
0026 Q_CONSTRUCTOR_FUNCTION(initLocale)
0027 #endif
0028 
0029 void InputManagerTest::init()
0030 {
0031     if (QStringLiteral(LANG) != QStringLiteral("C")) {
0032         if (QLocale().language() != QLocale::German) {
0033             qWarning() << "Please enable the" << LANG << "locale on your system";
0034             exit(0);
0035         }
0036     }
0037     InputManager::inst()->clear();
0038 }
0039 
0040 void InputManagerTest::testAddition()
0041 {
0042     InputManager::inst()->append(QStringLiteral("4"));
0043     InputManager::inst()->append(QStringLiteral("+"));
0044     InputManager::inst()->append(QStringLiteral("2"));
0045     QCOMPARE(InputManager::inst()->result(), QStringLiteral("6"));
0046     InputManager::inst()->equal();
0047     InputManager::inst()->append(QStringLiteral("+"));
0048     InputManager::inst()->append(QStringLiteral("3"));
0049     QCOMPARE(InputManager::inst()->result(), QStringLiteral("9"));
0050 }
0051 
0052 void InputManagerTest::testMultiplication()
0053 {
0054     InputManager::inst()->append(QStringLiteral("4"));
0055     InputManager::inst()->append(QStringLiteral("*"));
0056     InputManager::inst()->append(QStringLiteral("2"));
0057     QCOMPARE(InputManager::inst()->result(), QStringLiteral("8"));
0058     InputManager::inst()->equal();
0059     InputManager::inst()->append(QStringLiteral("*"));
0060     InputManager::inst()->append(QStringLiteral("7"));
0061     QCOMPARE(InputManager::inst()->result(), QStringLiteral("56"));
0062 }
0063 
0064 void InputManagerTest::testDivision()
0065 {
0066     InputManager::inst()->append(QStringLiteral("70"));
0067     InputManager::inst()->append(QStringLiteral("÷"));
0068     InputManager::inst()->append(QStringLiteral("5"));
0069     QCOMPARE(InputManager::inst()->result(), QStringLiteral("14"));
0070     InputManager::inst()->equal();
0071     InputManager::inst()->append(QStringLiteral("*"));
0072     InputManager::inst()->append(QStringLiteral("5"));
0073     QCOMPARE(InputManager::inst()->result(), QStringLiteral("70"));
0074 }
0075 
0076 void InputManagerTest::testNonIntegerDivision()
0077 {
0078     InputManager::inst()->append(QStringLiteral("70"));
0079     InputManager::inst()->append(QStringLiteral("÷"));
0080     InputManager::inst()->append(QStringLiteral("9"));
0081     if (QStringLiteral(LANG) == QStringLiteral("C")) {
0082         QVERIFY(InputManager::inst()->result().startsWith(QStringLiteral("7.77777")));
0083     } else {
0084         QVERIFY(InputManager::inst()->result().startsWith(QStringLiteral("7,77777")));
0085     }
0086     InputManager::inst()->equal();
0087     InputManager::inst()->append(QStringLiteral("*"));
0088     InputManager::inst()->append(QStringLiteral("9"));
0089     QCOMPARE(InputManager::inst()->result(), QStringLiteral("70"));
0090 }
0091 
0092 QTEST_GUILESS_MAIN(InputManagerTest)
0093 
0094 #include "inputmanagertest.moc"