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"