1 #include "CurveConnectAs.h" 3 #include "DocumentModelExportFormat.h" 4 #include "ExportFileFunctions.h" 5 #include "ExportFileRelations.h" 6 #include "ExportValuesXOrY.h" 9 #include "MainWindow.h" 10 #include "MainWindowModel.h" 11 #include "PointStyle.h" 14 #include <QtTest/QtTest> 16 #include "SplinePair.h" 17 #include "Test/TestExport.h" 18 #include "Transformation.h" 24 const bool NO_DROP_REGRESSION =
false;
25 const bool NOT_USING_GNUPLOT =
false;
26 const bool EXPORT_ONLY=
true;
27 const QString NO_ERROR_REPORT_LOG_FILE;
28 const QString NO_REGRESSION_OPEN_FILE;
29 const bool NO_GNUPLOT_LOG_FILES =
false;
30 const bool NO_REGRESSION_IMPORT =
false;
31 const bool IS_RESET =
true;
32 const bool NO_EXPORT_ONLY =
false;
33 const bool NO_EXTRACT_IMAGE_ONLY =
false;
34 const QString NO_EXTRACT_IMAGE_EXTENSION;
35 const bool DEBUG_FLAG =
false;
36 const QStringList NO_LOAD_STARTUP_FILES;
37 const QStringList NO_COMMAND_LINE;
38 const QString STARTUP_DIG_LOWER_CASE (
"/tmp/export_only.dig");
39 const QString STARTUP_DIG_UPPER_CASE (
"/tmp/export_only.DIG");
40 const QStringList ONE_LOAD_STARTUP_FILE_LOWER_CASE (STARTUP_DIG_LOWER_CASE);
41 const QStringList ONE_LOAD_STARTUP_FILE_UPPER_CASE (STARTUP_DIG_UPPER_CASE);
42 const bool REGRESSION_IMPORT =
true;
51 bool TestExport::checkCommasInFunctionsForDelimiter (ExportDelimiter delimiter,
52 QLocale::Country country,
59 QTextStream str (&output);
66 unsigned int numWritesSoFar = 0;
69 CurveLimits curveLimitsMin, curveLimitsMax;
70 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
75 exportDelimiterToText (delimiter, NOT_USING_GNUPLOT),
92 bool TestExport::checkCommasInRelationsForDelimiter (ExportDelimiter delimiter,
93 QLocale::Country country,
100 QTextStream str (&output);
107 unsigned int numWritesSoFar = 0;
110 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
114 exportDelimiterToText (delimiter, NOT_USING_GNUPLOT),
129 void TestExport::cleanupTestCase ()
133 void TestExport::initData (
bool isLog,
134 ExportDelimiter delimiter,
135 QLocale::Country country)
137 const QString CURVE_NAME (
"Curve1");
138 const int LINE_WIDTH = 2, POINT_LINE_WIDTH = 1;
139 const ColorPalette LINE_COLOR = COLOR_PALETTE_BLACK, POINT_COLOR = COLOR_PALETTE_BLACK;
140 const int RADIUS = 5;
143 m_document =
new Document (nullImage);
145 m_curvesIncluded.clear ();
146 m_curvesIncluded << CURVE_NAME;
151 CONNECT_AS_FUNCTION_SMOOTH),
156 curveStyles.setCurveStyle (CURVE_NAME, curveStyle);
176 m_modelMainWindow.
setLocale (QLocale::English,
190 m_xThetaValues.clear ();
191 m_xThetaValues << 0.0009999;
192 m_xThetaValues << 0.001;
193 m_xThetaValues << 0.01;
194 m_xThetaValues << 0.1;
196 m_xThetaValues << 10;
197 m_xThetaValues << 100;
198 m_xThetaValues << 1000;
199 QTransform matrixScreen ( 51, 52, 1123,
202 QTransform matrixGraph (qLn (0.001), qLn (0.001), qLn (1000),
203 qLn ( 1), qLn ( 100), qLn ( 1),
205 m_transformation.updateTransformFromMatrices (matrixScreen,
207 m_transformation.setModelCoords (m_modelCoords,
212 void TestExport::initTestCase ()
214 initializeLogging (
"engauge_test",
218 m_mainWindow =
new MainWindow (NO_ERROR_REPORT_LOG_FILE,
219 NO_REGRESSION_OPEN_FILE,
221 NO_REGRESSION_IMPORT,
222 NO_GNUPLOT_LOG_FILES,
225 NO_EXTRACT_IMAGE_ONLY,
226 NO_EXTRACT_IMAGE_EXTENSION,
227 NO_LOAD_STARTUP_FILES,
233 m_modelExportOverride = exportDefault;
235 m_mainWindow->show ();
238 void TestExport::testCommasInFunctionsForCommasSwitzerland ()
240 QString outputExpectedIfCommaSeparator =
242 "\"0,001\",\"-1,27563\"\n" 243 "\"0,001\",\"-1,27563\"\n" 244 "\"0,01\",\"-1,26683\"\n" 245 "\"0,1\",\"-1,17881\"\n" 247 "10,\"-706,15184\"\n" 248 "100,\"-3997814,14355\"\n" 249 "1000,\"-4541901224,06376\"\n";
250 QString outputExpectedIfPeriodSeparator =
258 "100,-3997814.14355\n" 259 "1000,-4541901224.06376\n";
262 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_COMMA,
263 QLocale::Switzerland,
269 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
270 outputGot == outputExpectedIfPeriodSeparator);
273 void TestExport::testCommasInFunctionsForCommasUnitedStates ()
275 QString outputExpected =
283 "100,-3997814.14355\n" 284 "1000,-4541901224.06376\n";
287 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_COMMA,
288 QLocale::UnitedStates,
294 QVERIFY (outputGot == outputExpected);
297 void TestExport::testCommasInFunctionsForTabsSwitzerland ()
299 QString outputExpectedIfCommaSeparator =
307 "100\t-3997814,14355\n" 308 "1000\t-4541901224,06376\n";
309 QString outputExpectedIfPeriodSeparator =
317 "100\t-3997814.14355\n" 318 "1000\t-4541901224.06376\n";
321 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_TAB,
322 QLocale::Switzerland,
328 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
329 outputGot == outputExpectedIfPeriodSeparator);
332 void TestExport::testCommasInFunctionsForTabsUnitedStates ()
334 QString outputExpected =
342 "100\t-3997814.14355\n" 343 "1000\t-4541901224.06376\n";
346 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_TAB,
347 QLocale::UnitedStates,
353 QVERIFY (outputGot == outputExpected);
356 void TestExport::testCommasInRelationsForCommasSwitzerland ()
358 QString outputExpectedIfCommaSeparator =
360 "\"3,3192\",\"2,08003\"\n" 361 "\"3,3723\",\"2,15796\"\n" 362 "\"3,432\",\"2,23368\"\n" 363 "\"3,4935\",\"2,30883\"\n" 364 "\"3,5539\",\"2,38438\"\n" 365 "\"3,6113\",\"2,46094\"\n" 366 "\"3,6687\",\"2,5375\"\n" 367 "\"3,7261\",\"2,61406\"\n" 368 "\"3,7836\",\"2,69062\"\n" 369 "\"3,841\",\"2,76718\"\n" 370 "\"3,9012\",\"2,84276\"\n" 371 "\"3,9628\",\"2,91791\"\n" 372 "\"4,0231\",\"2,99345\"\n" 373 "\"4,0785\",\"3,07067\"\n" 374 "\"4,1339\",\"3,14789\"\n" 375 "\"4,1932\",\"3,22378\"\n" 376 "\"4,2547\",\"3,29893\"\n" 377 "\"4,3156\",\"3,37426\"\n" 378 "\"4,3731\",\"3,45082\"\n" 379 "\"4,4305\",\"3,52738\"\n" 380 "\"4,4892\",\"3,60349\"\n" 381 "\"4,5486\",\"3,67938\"\n";
382 QString outputExpectedIfPeriodSeparator =
408 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_COMMA,
409 QLocale::Switzerland,
415 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
416 outputGot == outputExpectedIfPeriodSeparator);
419 void TestExport::testCommasInRelationsForCommasUnitedStates ()
421 QString outputExpected =
447 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_COMMA,
448 QLocale::UnitedStates,
454 QVERIFY (outputGot == outputExpected);
457 void TestExport::testCommasInRelationsForTabsSwitzerland ()
459 QString outputExpectedIfCommaSeparator =
483 QString outputExpectedIfPeriodSeparator =
509 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_TAB,
510 QLocale::Switzerland,
516 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
517 outputGot == outputExpectedIfPeriodSeparator);
520 void TestExport::testCommasInRelationsForTabsUnitedStates ()
522 QString outputExpected =
548 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_TAB,
549 QLocale::UnitedStates,
555 QVERIFY (outputGot == outputExpected);
558 void TestExport::testExportOnlyNonRegressionLowerCase ()
560 m_mainWindow->m_isErrorReportRegressionTest = NO_REGRESSION_IMPORT;
561 m_mainWindow->setCurrentFile (STARTUP_DIG_LOWER_CASE);
563 QString outputGot = m_mainWindow->fileNameForExportOnly ();
564 QString outputWanted = STARTUP_DIG_LOWER_CASE;
565 outputWanted = outputWanted.replace (
".dig",
".csv");
567 QVERIFY (outputGot == outputWanted);
570 void TestExport::testExportOnlyNonRegressionUpperCase ()
572 m_mainWindow->m_isErrorReportRegressionTest = NO_REGRESSION_IMPORT;
573 m_mainWindow->setCurrentFile (STARTUP_DIG_UPPER_CASE);
575 QString outputGot = m_mainWindow->fileNameForExportOnly ();
576 QString outputWanted = STARTUP_DIG_UPPER_CASE;
577 outputWanted = outputWanted.replace (
".DIG",
".csv");
579 QVERIFY (outputGot == outputWanted);
582 void TestExport::testExportOnlyRegressionLowerCase ()
584 m_mainWindow->m_isErrorReportRegressionTest = REGRESSION_IMPORT;
585 m_mainWindow->m_regressionFile = STARTUP_DIG_LOWER_CASE;
587 QString outputGot = m_mainWindow->fileNameForExportOnly ();
588 QString outputWanted = STARTUP_DIG_LOWER_CASE;
589 outputWanted = outputWanted.replace (
".dig",
".csv_actual_1");
591 QVERIFY (outputGot == outputWanted);
594 void TestExport::testExportOnlyRegressionUpperCase ()
596 m_mainWindow->m_isErrorReportRegressionTest = REGRESSION_IMPORT;
597 m_mainWindow->m_regressionFile = STARTUP_DIG_UPPER_CASE;
599 QString outputGot = m_mainWindow->fileNameForExportOnly ();
600 QString outputWanted = STARTUP_DIG_UPPER_CASE;
601 outputWanted = outputWanted.replace (
".DIG",
".csv_actual_1");
603 QVERIFY (outputGot == outputWanted);
606 void TestExport::testLogExtrapolationFunctionsAll ()
609 EXPORT_DELIMITER_COMMA,
610 QLocale::UnitedStates);
614 QTextStream str (&dummy);
619 unsigned int numWritesSoFar = 0;
622 CurveLimits curveLimitsMin, curveLimitsMax;
623 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
const CoordSystem & coordSystem() const
Currently active CoordSystem.
void setCursorSize(int cursorSize)
Set method for effective cursor size.
void setModelGeneral(const DocumentModelGeneral &modelGeneral)
Set method for DocumentModelGeneral.
Model for DlgSettingsCurveProperties and CmdSettingsCurveProperties.
void addPointGraphWithSpecifiedIdentifier(const QString &curveName, const QPointF &posScreen, const QString &identifier, double ordinal)
Add a single graph point with the specified point identifer. Note that PointStyle is not applied to t...
void setCoordScaleYRadius(CoordScale coordScale)
Set method for linear/log scale on y/radius.
void setModelCoords(const DocumentModelCoords &modelCoords)
Set method for DocumentModelCoords.
void setLocale(QLocale::Language language, QLocale::Country country)
Set method for locale given attributes.
Unit test of Export classes.
TestExport(QObject *parent=0)
Single constructor.
void setModelExport(const DocumentModelExportFormat &modelExport)
Set method for DocumentModelExportFormat.
Details for a specific Point.
Strategy class for exporting to a file. This strategy is external to the Document class so that class...
void setModelCurveStyles(const CurveStyles &modelCurveStyles)
Set method for CurveStyles.
CoordScale coordScaleXTheta() const
Get method for linear/log scale on x/theta.
Container for LineStyle and PointStyle for one Curve.
Storage of one imported image and the data attached to that image.
Details for a specific Line.
CoordScale coordScaleYRadius() const
Get method for linear/log scale on y/radius.
Strategy class for exporting to a file. This strategy is external to the Document class so that class...
void setExtraPrecision(int extraPrecision)
Set method for extra digits of precision.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
void setCoordScaleXTheta(CoordScale coordScale)
Set method for linear/log scale on x/theta.
void setCoordsType(CoordsType coordsType)
Set method for coordinates type.