File indexing completed on 2024-05-12 05:40:54
0001 /*************************************************************************** 0002 * Copyright (C) 2015 by Renaud Guezennec * 0003 * Copyright (C) 2015 by Benoit Lagarde * 0004 * http://renaudguezennec.homelinux.org/accueil,3.html * 0005 * * 0006 * Rolisteam is free software; you can redistribute it and/or modify * 0007 * it under the terms of the GNU General Public License as published by * 0008 * the Free Software Foundation; either version 2 of the License, or * 0009 * (at your option) any later version. * 0010 * * 0011 * This program is distributed in the hope that it will be useful, * 0012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0014 * GNU General Public License for more details. * 0015 * * 0016 * You should have received a copy of the GNU General Public License * 0017 * along with this program; if not, write to the * 0018 * Free Software Foundation, Inc., * 0019 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 0020 ***************************************************************************/ 0021 #include <QtTest/QtTest> 0022 0023 #include "rwidgets/customs/diameterselector.h" 0024 #include "rwidgets/customs/filedirchooser.h" 0025 #include "rwidgets/customs/realslider.h" 0026 0027 #include "controller/view_controller/imageselectorcontroller.h" 0028 #include "rwidgets/dialogs/imageselectordialog.h" 0029 #include <helper.h> 0030 0031 class WidgetsTest : public QObject 0032 { 0033 Q_OBJECT 0034 0035 public: 0036 WidgetsTest(); 0037 0038 private slots: 0039 void initTestCase(); 0040 void cleanupTestCase(); 0041 0042 void realSliderTest(); 0043 void fileDirChooserTest(); 0044 void diameterSelectorTest(); 0045 void imageSelectorTest(); 0046 0047 private: 0048 std::unique_ptr<RealSlider> m_realSlider; 0049 std::unique_ptr<FileDirChooser> m_fileDirChooser; 0050 std::unique_ptr<DiameterSelector> m_diameter; 0051 }; 0052 WidgetsTest::WidgetsTest() {} 0053 void WidgetsTest::initTestCase() 0054 { 0055 m_realSlider.reset(new RealSlider()); 0056 m_fileDirChooser.reset(new FileDirChooser()); 0057 m_diameter.reset(new DiameterSelector()); 0058 } 0059 0060 void WidgetsTest::cleanupTestCase() {} 0061 0062 void WidgetsTest::realSliderTest() 0063 { 0064 qreal step= 0.01; 0065 m_realSlider->setStep(step); 0066 QCOMPARE(m_realSlider->step(), step); 0067 0068 qreal end= 100.; 0069 m_realSlider->setEnd(end); 0070 QCOMPARE(m_realSlider->end(), end); 0071 0072 qreal start= 0.; 0073 m_realSlider->setStart(start); 0074 QCOMPARE(m_realSlider->start(), start); 0075 0076 m_realSlider->setRealValue(50.); 0077 0078 QSignalSpy spy(m_realSlider.get(), &RealSlider::valueChanged); 0079 0080 m_realSlider->triggerAction(QAbstractSlider::SliderSingleStepAdd); 0081 /*QCOMPARE(spy.count(), 1); 0082 0083 auto args = spy.takeFirst(); 0084 QVERIFY(qFuzzyCompare(args.at(0).toReal(),50.01)); 0085 0086 m_realSlider->triggerAction(QAbstractSlider::SliderSingleStepSub); 0087 QCOMPARE(spy.count(), 2); 0088 0089 args = spy.takeFirst(); 0090 QVERIFY(qFuzzyCompare(args.at(0).toReal(),50.0));*/ 0091 } 0092 0093 void WidgetsTest::fileDirChooserTest() 0094 { 0095 QString path("/home/path/place"); 0096 m_fileDirChooser->setPath(path); 0097 QCOMPARE(m_fileDirChooser->path(), path); 0098 0099 QString filter("*.png"); 0100 m_fileDirChooser->setFilter(filter); 0101 QCOMPARE(m_fileDirChooser->getFilter(), filter); 0102 } 0103 0104 void WidgetsTest::diameterSelectorTest() 0105 { 0106 auto val= 50; 0107 m_diameter->setDiameter(val); 0108 QCOMPARE(m_diameter->getCurrentValue(), val); 0109 } 0110 0111 void WidgetsTest::imageSelectorTest() 0112 { 0113 auto server = Helper::initWebServer(); 0114 ImageSelectorController ctrl(false, ImageSelectorController::All, ImageSelectorController::Square); 0115 ImageSelectorDialog dialog(&ctrl, nullptr, "http://127.0.0.1:9090/image/Seppun_tashime.jpg"); 0116 0117 QSignalSpy spy1(&ctrl, &ImageSelectorController::pixmapChanged); 0118 dialog.show(); 0119 0120 auto dlAct = dialog.findChild<QAction*>("m_downloadAct"); 0121 dlAct->trigger(); 0122 spy1.wait(100); 0123 QCOMPARE(spy1.count(), 1); 0124 0125 dialog.accept(); 0126 0127 auto pix= QImage::fromData(ctrl.finalImageData()); 0128 QCOMPARE(pix.width(), pix.height()); 0129 0130 delete server; 0131 } 0132 0133 QTEST_MAIN(WidgetsTest); 0134 0135 #include "tst_widgets.moc"