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"