Test openning measurement files.
--HG-- branch : develop
This commit is contained in:
parent
25561858f0
commit
e236757d57
|
@ -54,5 +54,5 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
app.InitOptions();
|
||||
app.ParseCommandLine(app.arguments());
|
||||
return app.exec();
|
||||
return app.IsTestMode() ? 0 : app.exec(); // single return point is always better than more
|
||||
}
|
||||
|
|
|
@ -99,7 +99,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con
|
|||
switch (type)
|
||||
{
|
||||
case QtDebugMsg:
|
||||
std::cerr << msg.toUtf8().constData() << std::endl;
|
||||
std::cout << msg.toUtf8().constData() << std::endl;
|
||||
return;
|
||||
case QtWarningMsg:
|
||||
messageBox.setIcon(QMessageBox::Warning);
|
||||
|
@ -116,13 +116,20 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con
|
|||
|
||||
if (type == QtWarningMsg || type == QtCriticalMsg || type == QtFatalMsg)
|
||||
{
|
||||
if (topWinAllowsPop)
|
||||
if (not qApp->IsTestMode())
|
||||
{
|
||||
messageBox.setInformativeText(msg);
|
||||
messageBox.setStandardButtons(QMessageBox::Ok);
|
||||
messageBox.setWindowModality(Qt::ApplicationModal);
|
||||
messageBox.setModal(true);
|
||||
messageBox.exec();
|
||||
if (topWinAllowsPop)
|
||||
{
|
||||
messageBox.setInformativeText(msg);
|
||||
messageBox.setStandardButtons(QMessageBox::Ok);
|
||||
messageBox.setWindowModality(Qt::ApplicationModal);
|
||||
messageBox.setModal(true);
|
||||
messageBox.exec();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << msg.toUtf8().constData() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -146,7 +153,8 @@ MApplication::MApplication(int &argc, char **argv)
|
|||
mainWindows(),
|
||||
localServer(nullptr),
|
||||
trVars(nullptr),
|
||||
dataBase(QPointer<DialogMDataBase>())
|
||||
dataBase(QPointer<DialogMDataBase>()),
|
||||
testMode(false)
|
||||
{
|
||||
setApplicationDisplayName(VER_PRODUCTNAME_STR);
|
||||
setApplicationName(VER_INTERNALNAME_STR);
|
||||
|
@ -256,6 +264,12 @@ bool MApplication::notify(QObject *receiver, QEvent *event)
|
|||
return false;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
bool MApplication::IsTestMode() const
|
||||
{
|
||||
return testMode;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
bool MApplication::IsTheOnly() const
|
||||
{
|
||||
|
@ -496,6 +510,11 @@ void MApplication::ParseCommandLine(const QStringList &arguments)
|
|||
QCoreApplication::translate("main", "The pattern unit"));
|
||||
parser.addOption(unitOption);
|
||||
//-----
|
||||
QCommandLineOption testOption(QStringList() << "test",
|
||||
QCoreApplication::translate("main", "Use for unit testing. Run the program and open a file without showing a "
|
||||
"window."));
|
||||
parser.addOption(testOption);
|
||||
//-----
|
||||
parser.process(arguments);
|
||||
|
||||
bool flagHeight = false;
|
||||
|
@ -568,9 +587,18 @@ void MApplication::ParseCommandLine(const QStringList &arguments)
|
|||
}
|
||||
}
|
||||
|
||||
testMode = parser.isSet(testOption);
|
||||
|
||||
const QStringList args = parser.positionalArguments();
|
||||
if (args.count() > 0)
|
||||
{
|
||||
if (testMode && args.count() > 1)
|
||||
{
|
||||
fprintf(stderr, "%s\n", qPrintable(QCoreApplication::translate("main",
|
||||
"Error: Test mode doesn't support openning several files.")));
|
||||
parser.showHelp(1);
|
||||
}
|
||||
|
||||
for (int i = 0; i < args.size(); ++i)
|
||||
{
|
||||
NewMainWindow();
|
||||
|
@ -594,7 +622,10 @@ void MApplication::ParseCommandLine(const QStringList &arguments)
|
|||
}
|
||||
else
|
||||
{
|
||||
NewMainWindow();
|
||||
if (not testMode)
|
||||
{
|
||||
NewMainWindow();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -629,7 +660,10 @@ TMainWindow *MApplication::NewMainWindow()
|
|||
{
|
||||
TMainWindow *tape = new TMainWindow();
|
||||
mainWindows.prepend(tape);
|
||||
tape->show();
|
||||
if (not qApp->IsTestMode())
|
||||
{
|
||||
tape->show();
|
||||
}
|
||||
return tape;
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ public:
|
|||
|
||||
virtual bool notify(QObject * receiver, QEvent * event) Q_DECL_OVERRIDE;
|
||||
|
||||
bool IsTestMode() const;
|
||||
bool IsTheOnly() const;
|
||||
TMainWindow *MainWindow();
|
||||
QList<TMainWindow*> MainWindows();
|
||||
|
@ -94,6 +95,7 @@ private:
|
|||
QLocalServer *localServer;
|
||||
VTranslateVars *trVars;
|
||||
QPointer<DialogMDataBase> dataBase;
|
||||
bool testMode;
|
||||
|
||||
void Clean();
|
||||
};
|
||||
|
|
|
@ -43,7 +43,8 @@ SOURCES += \
|
|||
tst_vlayoutdetail.cpp \
|
||||
tst_varc.cpp \
|
||||
stable.cpp \
|
||||
tst_measurementregexp.cpp
|
||||
tst_measurementregexp.cpp \
|
||||
tst_tapecommandline.cpp
|
||||
|
||||
HEADERS += \
|
||||
tst_vposter.h \
|
||||
|
@ -54,7 +55,8 @@ HEADERS += \
|
|||
tst_vlayoutdetail.h \
|
||||
tst_varc.h \
|
||||
stable.h \
|
||||
tst_measurementregexp.h
|
||||
tst_measurementregexp.h \
|
||||
tst_tapecommandline.h
|
||||
|
||||
# Set using ccache. Function enable_ccache() defined in common.pri.
|
||||
$$enable_ccache()
|
||||
|
@ -169,3 +171,23 @@ else:unix: LIBS += -L$${OUT_PWD}/../../libs/qmuparser/$${DESTDIR} -lqmuparser
|
|||
|
||||
INCLUDEPATH += $${PWD}/../../libs/qmuparser
|
||||
DEPENDPATH += $${PWD}/../../libs/qmuparser
|
||||
|
||||
# Only for adding path to LD_LIBRARY_PATH
|
||||
# VPropertyExplorer library
|
||||
win32:CONFIG(release, debug|release): LIBS += -L$${OUT_PWD}/../../libs/vpropertyexplorer/$${DESTDIR} -lvpropertyexplorer
|
||||
else:win32:CONFIG(debug, debug|release): LIBS += -L$${OUT_PWD}/../../libs/vpropertyexplorer/$${DESTDIR} -lvpropertyexplorer
|
||||
else:unix: LIBS += -L$${OUT_PWD}/../../libs/vpropertyexplorer/$${DESTDIR} -lvpropertyexplorer
|
||||
|
||||
INCLUDEPATH += $${PWD}/../../libs/vpropertyexplorer
|
||||
DEPENDPATH += $${PWD}/../../libs/vpropertyexplorer
|
||||
|
||||
TAPE_TEST_FILES += \
|
||||
tst_tape/keiko.vit
|
||||
|
||||
for(DIR, TAPE_TEST_FILES) {
|
||||
#add these absolute paths to a variable which
|
||||
#ends up as 'mkcommands = path1 path2 path3 ...'
|
||||
tape_path += $${PWD}/$$DIR
|
||||
}
|
||||
|
||||
copyToDestdir($$tape_path, $$shell_path($${OUT_PWD}/$$DESTDIR/tst_tape))
|
||||
|
|
|
@ -47,3 +47,103 @@ void AbstractTest::Comparison(const QVector<QPointF> &ekv, const QVector<QPointF
|
|||
QCOMPARE(ekv.at(i).toPoint(), ekvOrig.at(i).toPoint()); // Don't use comparison float values
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QString AbstractTest::ValentinaPath() const
|
||||
{
|
||||
const QString path = QStringLiteral("/../../../app/valentina/bin/valentina");
|
||||
#ifdef Q_OS_WIN
|
||||
return QApplication::applicationDirPath() + path + QStringList(".exe");
|
||||
#else
|
||||
return QApplication::applicationDirPath() + path;
|
||||
#endif
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
QString AbstractTest::TapePath() const
|
||||
{
|
||||
const QString path = QStringLiteral("/../../../app/tape/bin/tape");
|
||||
#ifdef Q_OS_WIN
|
||||
return QApplication::applicationDirPath() + path + QStringList(".exe");
|
||||
#else
|
||||
return QApplication::applicationDirPath() + path;
|
||||
#endif
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
bool AbstractTest::Run(const QString &program, const QStringList &arguments)
|
||||
{
|
||||
const QString parameters = QString("Program: %1 \nArguments: %2.").arg(program).arg(arguments.join(", "));
|
||||
|
||||
QFileInfo info(program);
|
||||
if (not info.exists())
|
||||
{
|
||||
const QString msg = QString("Can't find binary.\n%1").arg(parameters);
|
||||
QWARN(msg.toUtf8().constData());
|
||||
return false;
|
||||
}
|
||||
|
||||
QProcess *process = new QProcess(this);
|
||||
process->setWorkingDirectory(info.absoluteDir().absolutePath());
|
||||
process->start(program, arguments);
|
||||
|
||||
if (not process->waitForFinished())// 30 sec
|
||||
{
|
||||
const QString msg = QString("The operation timed out or an error occurred.\n%1").arg(parameters);
|
||||
QWARN(msg.toUtf8().constData());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (process->exitStatus() == QProcess::CrashExit)
|
||||
{
|
||||
const QString msg = QString("Program crashed.\n%1\n%2").arg(parameters)
|
||||
.arg(QString(process->readAllStandardError()));
|
||||
QWARN(msg.toUtf8().constData());
|
||||
return false;
|
||||
}
|
||||
|
||||
if (process->exitCode() != 0)
|
||||
{
|
||||
const QString msg = QString("Failed.\n%1\n%2").arg(parameters)
|
||||
.arg(QString(process->readAllStandardError()));
|
||||
QWARN(msg.toUtf8().constData());
|
||||
return false;
|
||||
}
|
||||
|
||||
delete process;
|
||||
return true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
bool AbstractTest::CopyRecursively(const QString &srcFilePath, const QString &tgtFilePath) const
|
||||
{
|
||||
QFileInfo srcFileInfo(srcFilePath);
|
||||
if (srcFileInfo.isDir())
|
||||
{
|
||||
QDir targetDir(tgtFilePath);
|
||||
targetDir.cdUp();
|
||||
if (not targetDir.mkdir(QFileInfo(tgtFilePath).fileName()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
QDir sourceDir(srcFilePath);
|
||||
QStringList fileNames = sourceDir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden |
|
||||
QDir::System);
|
||||
foreach (const QString &fileName, fileNames)
|
||||
{
|
||||
const QString newSrcFilePath = srcFilePath + QLatin1Char('/') + fileName;
|
||||
const QString newTgtFilePath = tgtFilePath + QLatin1Char('/') + fileName;
|
||||
if (not CopyRecursively(newSrcFilePath, newTgtFilePath))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else
|
||||
{
|
||||
if (not QFile::copy(srcFilePath, tgtFilePath))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -40,6 +40,11 @@ public:
|
|||
protected:
|
||||
void Comparison(const QVector<QPointF> &ekv, const QVector<QPointF> &ekvOrig) const;
|
||||
|
||||
QString ValentinaPath() const;
|
||||
QString TapePath() const;
|
||||
|
||||
bool Run(const QString &program, const QStringList &arguments);
|
||||
bool CopyRecursively(const QString &srcFilePath, const QString &tgtFilePath) const;
|
||||
};
|
||||
|
||||
#endif // ABSTRACTTEST_H
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include "tst_vlayoutdetail.h"
|
||||
#include "tst_varc.h"
|
||||
#include "tst_measurementregexp.h"
|
||||
#include "tst_tapecommandline.h"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
|
@ -54,6 +55,7 @@ int main(int argc, char** argv)
|
|||
ASSERT_TEST(new TST_VLayoutDetail());
|
||||
ASSERT_TEST(new TST_VArc());
|
||||
ASSERT_TEST(new TST_MeasurementRegExp());
|
||||
ASSERT_TEST(new TST_TapeCommandLine());
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
143
src/test/ValentinaTest/tst_tape/keiko.vit
Normal file
143
src/test/ValentinaTest/tst_tape/keiko.vit
Normal file
|
@ -0,0 +1,143 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<vit>
|
||||
<!--Measurements created with Valentina (http://www.valentina-project.org/).-->
|
||||
<version>0.3.0</version>
|
||||
<read-only>false</read-only>
|
||||
<notes/>
|
||||
<unit>cm</unit>
|
||||
<personal>
|
||||
<family-name/>
|
||||
<given-name/>
|
||||
<birth-date>1900-01-01</birth-date>
|
||||
<sex>male</sex>
|
||||
<email>username@example.com</email>
|
||||
</personal>
|
||||
<body-measurements>
|
||||
<m name="across_back_b" value="0" description="" full_name=""/>
|
||||
<m name="across_chest_f" value="0" description="" full_name=""/>
|
||||
<m name="arm_armpit_to_wrist" value="0" description="" full_name=""/>
|
||||
<m name="arm_neck_back_to_wrist_bent" value="0" description="" full_name=""/>
|
||||
<m name="arm_neck_side_to_finger_tip" value="0" description="" full_name=""/>
|
||||
<m name="arm_neck_side_to_wrist" value="0" description="" full_name=""/>
|
||||
<m name="arm_neck_side_to_wrist" value="0" description="" full_name=""/>
|
||||
<m name="arm_shoulder_tip_to_elbow" value="19.5" description="" full_name=""/>
|
||||
<m name="arm_shoulder_tip_to_wrist" value="43.5" description="" full_name=""/>
|
||||
<m name="arm_upper_circ" value="25" description="" full_name=""/>
|
||||
<m name="arm_wrist_circ" value="14.5" description="" full_name=""/>
|
||||
<m name="armfold_to_armfold_b" value="32.86" description="" full_name=""/>
|
||||
<m name="armfold_to_armfold_f" value="31" description="" full_name=""/>
|
||||
<m name="armfold_to_armfold_f" value="31" description="" full_name=""/>
|
||||
<m name="armpit_to_waist_side" value="0" description="" full_name=""/>
|
||||
<m name="armscye_arc" value="0" description="" full_name=""/>
|
||||
<m name="armscye_circ" value="0" description="" full_name=""/>
|
||||
<m name="armscye_width" value="0" description="" full_name=""/>
|
||||
<m name="body_armfold_circ" value="0" description="" full_name=""/>
|
||||
<m name="body_torso_circ" value="0" description="" full_name=""/>
|
||||
<m name="bust_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="bust_circ" value="82" description="" full_name=""/>
|
||||
<m name="bustpoint_to_bustpoint" value="0" description="" full_name=""/>
|
||||
<m name="bustpoint_to_bustpoint_halter" value="0" description="" full_name=""/>
|
||||
<m name="bustpoint_to_neck_side" value="0" description="" full_name=""/>
|
||||
<m name="crotch_length" value="0" description="" full_name=""/>
|
||||
<m name="crotch_length" value="0" description="" full_name=""/>
|
||||
<m name="foot_instep_circ" value="0" description="" full_name=""/>
|
||||
<m name="foot_length" value="0" description="" full_name=""/>
|
||||
<m name="foot_width" value="0" description="" full_name=""/>
|
||||
<m name="hand_circ" value="0" description="" full_name=""/>
|
||||
<m name="hand_length" value="0" description="" full_name=""/>
|
||||
<m name="hand_length" value="0" description="" full_name=""/>
|
||||
<m name="hand_palm_width" value="0" description="" full_name=""/>
|
||||
<m name="head_chin_to_neck_back" value="0" description="" full_name=""/>
|
||||
<m name="head_crown_to_neck_back" value="0" description="" full_name=""/>
|
||||
<m name="head_length" value="0" description="" full_name=""/>
|
||||
<m name="height_ankle" value="0" description="" full_name=""/>
|
||||
<m name="height_armpit" value="0" description="" full_name=""/>
|
||||
<m name="height_bustpoint" value="0" description="" full_name=""/>
|
||||
<m name="height_highhip" value="0" description="" full_name=""/>
|
||||
<m name="height_hip" value="0" description="" full_name=""/>
|
||||
<m name="height_knee" value="50" description="" full_name=""/>
|
||||
<m name="height_neck_back" value="0" description="" full_name=""/>
|
||||
<m name="height_neck_back_to_knee" value="0" description="" full_name=""/>
|
||||
<m name="height_neck_back_to_knee" value="0" description="" full_name=""/>
|
||||
<m name="height_neck_front" value="0" description="" full_name=""/>
|
||||
<m name="height_neck_front" value="0" description="" full_name=""/>
|
||||
<m name="height_neck_side" value="0" description="" full_name=""/>
|
||||
<m name="height_scapula" value="0" description="" full_name=""/>
|
||||
<m name="height_shoulder_tip" value="0" description="" full_name=""/>
|
||||
<m name="height_shoulder_tip" value="0" description="" full_name=""/>
|
||||
<m name="height_waist_front" value="0" description="" full_name=""/>
|
||||
<m name="height_waist_side" value="0" description="" full_name=""/>
|
||||
<m name="height_waist_side_to_hip" value="15" description="" full_name=""/>
|
||||
<m name="height_waist_side_to_knee" value="0" description="" full_name=""/>
|
||||
<m name="highbust_arc_b" value="0" description="" full_name=""/>
|
||||
<m name="highbust_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="highbust_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="highbust_b_over_shoulder_to_highbust_f" value="0" description="" full_name=""/>
|
||||
<m name="highbust_circ" value="0" description="" full_name=""/>
|
||||
<m name="highbust_to_waist_f" value="0" description="" full_name=""/>
|
||||
<m name="highhip_arc_b" value="0" description="" full_name=""/>
|
||||
<m name="highhip_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="highhip_circ" value="0" description="" full_name=""/>
|
||||
<m name="hip_arc_b" value="0" description="" full_name=""/>
|
||||
<m name="hip_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="hip_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="hip_circ" value="89" description="" full_name=""/>
|
||||
<m name="hip_circ" value="89" description="" full_name=""/>
|
||||
<m name="hip_with_abdomen_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="indent_neck_back" value="0" description="" full_name=""/>
|
||||
<m name="leg_ankle_circ" value="19" description="" full_name=""/>
|
||||
<m name="leg_calf_circ" value="41" description="" full_name=""/>
|
||||
<m name="leg_crotch_to_floor" value="79.25" description="" full_name=""/>
|
||||
<m name="leg_knee_circ" value="0" description="" full_name=""/>
|
||||
<m name="leg_knee_circ_bent" value="0" description="" full_name=""/>
|
||||
<m name="leg_thigh_mid_circ" value="0" description="" full_name=""/>
|
||||
<m name="leg_thigh_upper_circ" value="47.02" description="" full_name=""/>
|
||||
<m name="leg_waist_side_to_floor" value="0" description="" full_name=""/>
|
||||
<m name="leg_waist_side_to_knee" value="0" description="" full_name=""/>
|
||||
<m name="lowbust_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="lowbust_circ" value="67" description="" full_name=""/>
|
||||
<m name="lowbust_to_waist_f" value="0" description="" full_name=""/>
|
||||
<m name="neck_arc_b" value="0" description="" full_name=""/>
|
||||
<m name="neck_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="neck_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="neck_back_to_highbust_b" value="0" description="" full_name=""/>
|
||||
<m name="neck_back_to_waist_b" value="34" description="" full_name=""/>
|
||||
<m name="neck_back_to_waist_side" value="0" description="" full_name=""/>
|
||||
<m name="neck_circ" value="29.5" description="" full_name=""/>
|
||||
<m name="neck_front_to_bust_f" value="0" description="" full_name=""/>
|
||||
<m name="neck_front_to_highbust_f" value="0" description="" full_name=""/>
|
||||
<m name="neck_front_to_highbust_f" value="0" description="" full_name=""/>
|
||||
<m name="neck_front_to_waist_f" value="33.3" description="" full_name=""/>
|
||||
<m name="neck_front_to_waist_f" value="33.3" description="" full_name=""/>
|
||||
<m name="neck_front_to_waist_side" value="0" description="" full_name=""/>
|
||||
<m name="neck_mid_circ" value="0" description="" full_name=""/>
|
||||
<m name="neck_mid_circ" value="0" description="" full_name=""/>
|
||||
<m name="neck_side_to_armfold_b" value="0" description="" full_name=""/>
|
||||
<m name="neck_side_to_armfold_f" value="0" description="" full_name=""/>
|
||||
<m name="neck_side_to_armfold_f" value="0" description="" full_name=""/>
|
||||
<m name="neck_side_to_waist_b" value="37" description="" full_name=""/>
|
||||
<m name="neck_side_to_waist_f" value="38.5" description="" full_name=""/>
|
||||
<m name="neck_side_to_waist_f" value="38.5" description="" full_name=""/>
|
||||
<m name="neck_side_to_waist_f" value="38.5" description="" full_name=""/>
|
||||
<m name="neck_width" value="0" description="" full_name=""/>
|
||||
<m name="rise_length_side" value="0" description="" full_name=""/>
|
||||
<m name="rise_length_side" value="0" description="" full_name=""/>
|
||||
<m name="shoulder_length" value="13.5" description="" full_name=""/>
|
||||
<m name="shoulder_slope_neck_side_angle" value="0" description="" full_name=""/>
|
||||
<m name="shoulder_slope_neck_side_length" value="0" description="" full_name=""/>
|
||||
<m name="shoulder_tip_to_shoulder_tip_b" value="36.65" description="" full_name=""/>
|
||||
<m name="shoulder_tip_to_shoulder_tip_b" value="36.65" description="" full_name=""/>
|
||||
<m name="shoulder_tip_to_shoulder_tip_f" value="35.65" description="" full_name=""/>
|
||||
<m name="shoulder_tip_to_waist_back" value="0" description="" full_name=""/>
|
||||
<m name="shoulder_tip_to_waist_back" value="0" description="" full_name=""/>
|
||||
<m name="shoulder_tip_to_waist_front" value="0" description="" full_name=""/>
|
||||
<m name="shoulder_tip_to_waist_front" value="0" description="" full_name=""/>
|
||||
<m name="waist_arc_b" value="0" description="" full_name=""/>
|
||||
<m name="waist_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="waist_arc_f" value="0" description="" full_name=""/>
|
||||
<m name="waist_circ" value="59.5" description="" full_name=""/>
|
||||
<m name="waist_to_highhip_f" value="0" description="" full_name=""/>
|
||||
<m name="waist_to_hip_f" value="0" description="" full_name=""/>
|
||||
<m name="waist_to_waist_halter" value="0" description="" full_name=""/>
|
||||
</body-measurements>
|
||||
</vit>
|
87
src/test/ValentinaTest/tst_tapecommandline.cpp
Normal file
87
src/test/ValentinaTest/tst_tapecommandline.cpp
Normal file
|
@ -0,0 +1,87 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file tst_tapecommandline.cpp
|
||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
** @date 25 9, 2015
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentine project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2015 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina 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 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** Valentina 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 Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#include "tst_tapecommandline.h"
|
||||
|
||||
#include <QtTest>
|
||||
|
||||
const QString tmpTestFolder = QStringLiteral("tst_tape_tmp");
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
TST_TapeCommandLine::TST_TapeCommandLine(QObject *parent)
|
||||
:AbstractTest(parent)
|
||||
{
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void TST_TapeCommandLine::init()
|
||||
{
|
||||
QDir tmpDir(tmpTestFolder);
|
||||
if (not tmpDir.removeRecursively())
|
||||
{
|
||||
QFAIL("Fail to remove temp directory.");
|
||||
}
|
||||
|
||||
if (not CopyRecursively(QApplication::applicationDirPath() + QLatin1Char('/') + QStringLiteral("tst_tape"),
|
||||
QApplication::applicationDirPath() + QLatin1Char('/') + tmpTestFolder))
|
||||
{
|
||||
QFAIL("Fail to prepare files for testing.");
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void TST_TapeCommandLine::OpenMeasurements_data() const
|
||||
{
|
||||
QTest::addColumn<QString>("file");
|
||||
QTest::addColumn<bool>("result");
|
||||
|
||||
QTest::newRow("Send wrong path to file") << "wrongPath.vit" << false; // The file doesn't exist!
|
||||
QTest::newRow("Old individual format to new version") << "keiko.vit" << true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void TST_TapeCommandLine::OpenMeasurements()
|
||||
{
|
||||
QFETCH(QString, file);
|
||||
QFETCH(bool, result);
|
||||
|
||||
const bool res = Run(TapePath(), QStringList() << "--test"
|
||||
<< QApplication::applicationDirPath() + QLatin1Char('/') + tmpTestFolder + QLatin1Char('/') + file);
|
||||
|
||||
QCOMPARE(res, result);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void TST_TapeCommandLine::cleanup()
|
||||
{
|
||||
QDir tmpDir(tmpTestFolder);
|
||||
if (not tmpDir.removeRecursively())
|
||||
{
|
||||
QWARN("Fail to remove temp directory.");
|
||||
}
|
||||
}
|
51
src/test/ValentinaTest/tst_tapecommandline.h
Normal file
51
src/test/ValentinaTest/tst_tapecommandline.h
Normal file
|
@ -0,0 +1,51 @@
|
|||
/************************************************************************
|
||||
**
|
||||
** @file tst_tapecommandline.h
|
||||
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||
** @date 25 9, 2015
|
||||
**
|
||||
** @brief
|
||||
** @copyright
|
||||
** This source code is part of the Valentine project, a pattern making
|
||||
** program, whose allow create and modeling patterns of clothing.
|
||||
** Copyright (C) 2015 Valentina project
|
||||
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||
**
|
||||
** Valentina 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 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** Valentina 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 Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||
**
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef TST_TAPECOMMANDLINE_H
|
||||
#define TST_TAPECOMMANDLINE_H
|
||||
|
||||
#include "abstracttest.h"
|
||||
|
||||
class TST_TapeCommandLine : public AbstractTest
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
TST_TapeCommandLine(QObject *parent = 0);
|
||||
|
||||
private slots:
|
||||
void init();
|
||||
void OpenMeasurements_data() const;
|
||||
void OpenMeasurements();
|
||||
void cleanup();
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(TST_TapeCommandLine)
|
||||
|
||||
};
|
||||
|
||||
#endif // TST_TAPECOMMANDLINE_H
|
Loading…
Reference in New Issue
Block a user