1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
/*
* KTechLab: An IDE for microcontrollers and electronics
* Copyright 2018 Zoltan Padrah <zoltan_padrah@users.sf.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include "../src/ktechlab.h"
#include "config.h"
#include "docmanager.h"
#include "electronics/circuitdocument.h"
#include <KAboutData>
#include <KLocalizedString>
#include <QDebug>
#include <QTest>
#include <QTemporaryFile>
#include <QApplication>
#include <QCommandLineParser>
#include <ktechlab_version.h>
class KtlTestsAppFixture : public QObject {
Q_OBJECT
public:
QApplication *app;
KTechlab *ktechlab;
private slots:
void initTestCase() {
int argc = 1;
char argv0[] = "tests_app";
char *argv[] = { argv0, nullptr };
app = new QApplication(argc, argv);
KAboutData aboutData("ktechlab", i18n("KTechLab"), KTECHLAB_VERSION_STRING,
i18n("An IDE for microcontrollers and electronics"),
KAboutLicense::GPL_V2, i18n("(C) 2003-2017, The KTechLab developers"),
"", "https://userbase.kde.org/KTechlab", "ktechlab-devel@kde.org" );
KAboutData::setApplicationData(aboutData);
QCommandLineParser parser;
aboutData.setupCommandLine(&parser);
parser.process(*app);
aboutData.processCommandLine(&parser);
ktechlab = new KTechlab;
}
void cleanupTestCase() {
delete ktechlab;
ktechlab = nullptr;
//delete app; // this crashes apparently
app = nullptr;
}
void testDocumentOpen() {
DocManager::self()->closeAll();
QCOMPARE( DocManager::self()->m_documentList.size(), 0);
QFile exFile(SRC_TESTS_DATA_DIR "test-document-draw-1.circuit");
QUrl exUrl = QUrl::fromLocalFile(exFile.fileName());
qDebug() << "open example: " << exUrl;
DocManager::self()->openURL(exUrl, nullptr);
QCOMPARE( DocManager::self()->m_documentList.size(), 1);
Document *doc = DocManager::self()->m_documentList.first();
QVERIFY( doc != nullptr );
QCOMPARE( doc->type(), Document::dt_circuit );
CircuitDocument *circDoc = static_cast<CircuitDocument*>( doc );
QVERIFY( circDoc != nullptr );
QVERIFY( circDoc->m_canvas );
qDebug() << "item list size " << circDoc->m_itemList.size();
//QRect saveArea = circDoc->m_canvas->rect(); // is empty
QRect resizeArea(0, -500, 400, 1080);
qDebug() << " resizeArea " << resizeArea;
circDoc->m_canvas->resize(resizeArea);
QRect saveArea(-500, -500, 1040, 1080);
qDebug() << "save area " << saveArea;
QPixmap *outputImage = new QPixmap( saveArea.size() );
outputImage->fill(Qt::green);
circDoc->exportToImageDraw(saveArea, *outputImage);
QImage img = dynamic_cast<QPixmap*>(outputImage)->toImage();
img = img.copy();
QTemporaryFile imgFile("testDocumentOpen_output_XXXXXX.png");
imgFile.setAutoRemove(false);
imgFile.open();
qDebug() << "imgFile.fileName() = " << imgFile.fileName();
bool saveResult = img.save(imgFile.fileName());
QCOMPARE( saveResult, true );
delete outputImage;
DocManager::self()->closeAll();
QCOMPARE( DocManager::self()->m_documentList.size(), 0);
}
};
QTEST_MAIN(KtlTestsAppFixture)
#include "tests_app.moc"
|