File indexing completed on 2024-05-12 16:45:26
0001 /*************************************************************************** 0002 * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane@mankowski.fr 0003 * SPDX-FileCopyrightText: 2022 G. DE BURE support@mankowski.fr 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 ***************************************************************************/ 0006 /** @file 0007 * This file is a test for SKGCalculatorEdit component. 0008 * 0009 * @author Stephane MANKOWSKI / Guillaume DE BURE 0010 */ 0011 #include "skgtestcalculatoredit.h" 0012 0013 #include <qtestevent.h> 0014 #include <qtestkeyboard.h> 0015 0016 #include "skgcalculatoredit.h" 0017 0018 void SKGTESTCalculatorEdit::TestValueCALCULATOR_data() 0019 { 0020 QTest::addColumn<QTestEventList>("events"); 0021 QTest::addColumn<double>("expected"); 0022 0023 { 0024 QTestEventList list; 0025 list.addKeyClicks(QStringLiteral("5.1")); 0026 QTest::newRow("simple positive value") << list << 5.1; 0027 } 0028 0029 { 0030 QTestEventList list; 0031 list.addKeyClicks(QStringLiteral("-7.2")); 0032 QTest::newRow("simple negative value") << list << -7.2; 0033 } 0034 0035 { 0036 QTestEventList list; 0037 list.addKeyClicks(QStringLiteral("10+5")); 0038 list.addKeyClick(Qt::Key_Return); 0039 QTest::newRow("enter +") << list << 15.0; 0040 } 0041 0042 { 0043 QTestEventList list; 0044 list.addKeyClicks(QStringLiteral("3.5*3")); 0045 list.addKeyClick(Qt::Key_Return); 0046 QTest::newRow("enter *") << list << 10.5; 0047 } 0048 0049 { 0050 QTestEventList list; 0051 list.addKeyClicks(QStringLiteral("5/2")); 0052 list.addKeyClick(Qt::Key_Return); 0053 QTest::newRow("enter /") << list << 2.5; 0054 } 0055 0056 { 0057 QTestEventList list; 0058 list.addKeyClicks(QStringLiteral("-5*2/4-6.2+3.1+4.5")); 0059 list.addKeyClick(Qt::Key_Return); 0060 QTest::newRow("enter complex operation") << list << -1.1; 0061 } 0062 0063 { 0064 QTestEventList list; 0065 list.addKeyClicks(QStringLiteral("3,5*3")); 0066 list.addKeyClick(Qt::Key_Return); 0067 QTest::newRow("enter ,") << list << 10.5; 0068 } 0069 0070 { 0071 QTestEventList list; 0072 list.addKeyClicks(QStringLiteral("3 024,25")); 0073 list.addKeyClick(Qt::Key_Return); 0074 QTest::newRow("enter 3 024,25") << list << 3024.25; 0075 } 0076 } 0077 0078 0079 void SKGTESTCalculatorEdit::TestValueCALCULATOR() 0080 { 0081 QFETCH(QTestEventList, events); 0082 QFETCH(double, expected); 0083 0084 SKGCalculatorEdit calculator(nullptr); 0085 calculator.setMode(SKGCalculatorEdit::CALCULATOR); 0086 events.simulate(&calculator); 0087 0088 calculator.valid(); 0089 calculator.formula(); 0090 calculator.addParameterValue(QStringLiteral("a"), 5.1); 0091 0092 QCOMPARE(calculator.value(), expected); 0093 } 0094 0095 void SKGTESTCalculatorEdit::TestValueEXPRESSION_data() 0096 { 0097 QTest::addColumn<QTestEventList>("events"); 0098 QTest::addColumn<bool>("valid"); 0099 QTest::addColumn<double>("expected"); 0100 0101 { 0102 QTestEventList list; 0103 list.addKeyClicks(QStringLiteral("abc")); 0104 list.addKeyClick(Qt::Key_Return); 0105 QTest::newRow("invalid expression") << list << false << 0.0; 0106 } 0107 { 0108 QTestEventList list; 0109 list.addKeyClicks(QStringLiteral("1e")); 0110 list.addKeyClick(Qt::Key_Return); 0111 list.addKeyClicks(QStringLiteral("1")); 0112 QTest::newRow("valid expression after invalid one") << list << true << 10.0; 0113 } 0114 0115 { 0116 QTestEventList list; 0117 list.addKeyClicks(QStringLiteral("5.1")); 0118 QTest::newRow("simple positive value") << list << true << 5.1; 0119 } 0120 0121 { 0122 QTestEventList list; 0123 list.addKeyClicks(QStringLiteral("-7.2")); 0124 QTest::newRow("simple negative value") << list << true << -7.2; 0125 } 0126 0127 { 0128 QTestEventList list; 0129 list.addKeyClicks(QStringLiteral("10+5")); 0130 list.addKeyClick(Qt::Key_Return); 0131 QTest::newRow("enter +") << list << true << 15.0; 0132 } 0133 0134 { 0135 QTestEventList list; 0136 list.addKeyClicks(QStringLiteral("3.5*3")); 0137 list.addKeyClick(Qt::Key_Return); 0138 QTest::newRow("enter *") << list << true << 10.5; 0139 } 0140 0141 { 0142 QTestEventList list; 0143 list.addKeyClicks(QStringLiteral("5/2")); 0144 list.addKeyClick(Qt::Key_Return); 0145 QTest::newRow("enter /") << list << true << 2.5; 0146 } 0147 0148 { 0149 QTestEventList list; 0150 list.addKeyClicks(QStringLiteral("-5*2/4-6.2+3.1+4.5")); 0151 list.addKeyClick(Qt::Key_Return); 0152 QTest::newRow("enter complex operation") << list << true << -1.1; 0153 } 0154 0155 { 0156 QTestEventList list; 0157 list.addKeyClicks(QStringLiteral("3,5*3")); 0158 list.addKeyClick(Qt::Key_Return); 0159 QTest::newRow("enter ,") << list << true << 10.5; 0160 } 0161 0162 { 0163 QTestEventList list; 0164 list.addKeyClicks(QStringLiteral("3 024,25")); 0165 list.addKeyClick(Qt::Key_Return); 0166 QTest::newRow("enter 3 024,25") << list << true << 3024.25; 0167 } 0168 } 0169 0170 void SKGTESTCalculatorEdit::TestValueEXPRESSION() 0171 { 0172 QFETCH(QTestEventList, events); 0173 QFETCH(bool, valid); 0174 QFETCH(double, expected); 0175 0176 SKGCalculatorEdit calculator(nullptr); 0177 calculator.setMode(SKGCalculatorEdit::EXPRESSION); 0178 events.simulate(&calculator); 0179 0180 QCOMPARE(calculator.valid(), valid); 0181 QCOMPARE(calculator.value(), expected); 0182 } 0183 0184 void SKGTESTCalculatorEdit::TestString_data() 0185 { 0186 QTest::addColumn<QTestEventList>("events"); 0187 QTest::addColumn<QString>("expected"); 0188 { 0189 QTestEventList list; 0190 list.addKeyClicks(QStringLiteral("3,5*3")); 0191 list.addKeyClick(Qt::Key_Return); 0192 QTest::newRow("enter , as string") << list << "10.5"; 0193 } 0194 0195 { 0196 QTestEventList list; 0197 list.addKeyClicks(QStringLiteral("5a")); 0198 list.addKeyClick(Qt::Key_Return); 0199 QTest::newRow("invalid expression") << list << "5a"; 0200 } 0201 0202 { 0203 QTestEventList list; 0204 list.addKeyClicks(QStringLiteral("-7.2")); 0205 list.addKeyClick(Qt::Key_Return); 0206 QTest::newRow("simple negative value") << list << "-7.2"; 0207 } 0208 0209 { 0210 QTestEventList list; 0211 list.addKeyClicks(QStringLiteral("+7.2")); 0212 list.addKeyClick(Qt::Key_Return); 0213 QTest::newRow("simple positive value") << list << "+7.2"; 0214 } 0215 0216 { 0217 QTestEventList list; 0218 list.addKeyClicks(QStringLiteral("-1.84*4-0.46*2-1.89-3.7")); 0219 list.addKeyClick(Qt::Key_Return); 0220 QTest::newRow("Bug 261318") << list << "-13.87"; 0221 } 0222 } 0223 0224 void SKGTESTCalculatorEdit::TestString() 0225 { 0226 QFETCH(QTestEventList, events); 0227 QFETCH(QString, expected); 0228 0229 SKGCalculatorEdit calculator(nullptr); 0230 calculator.setMode(SKGCalculatorEdit::EXPRESSION); 0231 events.simulate(&calculator); 0232 0233 QCOMPARE(calculator.text(), expected); 0234 } 0235 0236 void SKGTESTCalculatorEdit::TestSign_data() 0237 { 0238 QTest::addColumn<QTestEventList>("events"); 0239 QTest::addColumn<int>("expected"); 0240 0241 { 0242 QTestEventList list; 0243 list.addKeyClicks(QStringLiteral("5.1")); 0244 QTest::newRow("simple positive value") << list << 0; 0245 } 0246 0247 { 0248 QTestEventList list; 0249 list.addKeyClicks(QStringLiteral("-7.2")); 0250 QTest::newRow("simple negative value") << list << -1; 0251 } 0252 0253 { 0254 QTestEventList list; 0255 list.addKeyClicks(QStringLiteral("+7.2")); 0256 QTest::newRow("simple positive value") << list << 1; 0257 } 0258 } 0259 0260 void SKGTESTCalculatorEdit::TestSign() 0261 { 0262 QFETCH(QTestEventList, events); 0263 QFETCH(int, expected); 0264 0265 SKGCalculatorEdit calculator(nullptr); 0266 calculator.setMode(SKGCalculatorEdit::CALCULATOR); 0267 events.simulate(&calculator); 0268 0269 QCOMPARE(calculator.sign(), expected); 0270 } 0271 0272 QTEST_MAIN(SKGTESTCalculatorEdit) 0273