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 NOT_USING_GNUPLOT = false;
25 const
bool EXPORT_ONLY= true;
26 const QString NO_ERROR_REPORT_LOG_FILE;
27 const QString NO_REGRESSION_OPEN_FILE;
28 const
bool NO_GNUPLOT_LOG_FILES = false;
29 const
bool NO_REGRESSION_IMPORT = false;
30 const
bool NO_RESET = false;
31 const
bool NO_EXPORT_ONLY = false;
32 const
bool NO_EXTRACT_IMAGE_ONLY = false;
33 const QString NO_EXTRACT_IMAGE_EXTENSION;
34 const
bool DEBUG_FLAG = false;
35 const QStringList NO_LOAD_STARTUP_FILES;
36 const QStringList NO_COMMAND_LINE;
37 const QString STARTUP_DIG_LOWER_CASE ("/tmp/export_only.dig");
38 const QString STARTUP_DIG_UPPER_CASE ("/tmp/export_only.DIG");
39 const QStringList ONE_LOAD_STARTUP_FILE_LOWER_CASE (STARTUP_DIG_LOWER_CASE);
40 const QStringList ONE_LOAD_STARTUP_FILE_UPPER_CASE (STARTUP_DIG_UPPER_CASE);
41 const
bool REGRESSION_IMPORT = true;
50 bool TestExport::checkCommasInFunctionsForDelimiter (ExportDelimiter delimiter,
51 QLocale::Country country,
58 QTextStream str (&output);
65 unsigned int numWritesSoFar = 0;
68 CurveLimits curveLimitsMin, curveLimitsMax;
69 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
74 exportDelimiterToText (delimiter, NOT_USING_GNUPLOT),
91 bool TestExport::checkCommasInRelationsForDelimiter (ExportDelimiter delimiter,
92 QLocale::Country country,
99 QTextStream str (&output);
106 unsigned int numWritesSoFar = 0;
109 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
113 exportDelimiterToText (delimiter, NOT_USING_GNUPLOT),
128 void TestExport::cleanupTestCase ()
132 void TestExport::initData (
bool isLog,
133 ExportDelimiter delimiter,
134 QLocale::Country country)
136 const QString CURVE_NAME (
"Curve1");
137 const int LINE_WIDTH = 2, POINT_LINE_WIDTH = 1;
138 const ColorPalette LINE_COLOR = COLOR_PALETTE_BLACK, POINT_COLOR = COLOR_PALETTE_BLACK;
139 const int RADIUS = 5;
142 m_document =
new Document (nullImage);
144 m_curvesIncluded.clear ();
145 m_curvesIncluded << CURVE_NAME;
150 CONNECT_AS_FUNCTION_SMOOTH),
155 curveStyles.setCurveStyle (CURVE_NAME, curveStyle);
175 m_modelMainWindow.
setLocale (QLocale::English,
189 m_xThetaValues.clear ();
190 m_xThetaValues << 0.0009999;
191 m_xThetaValues << 0.001;
192 m_xThetaValues << 0.01;
193 m_xThetaValues << 0.1;
195 m_xThetaValues << 10;
196 m_xThetaValues << 100;
197 m_xThetaValues << 1000;
198 QTransform matrixScreen ( 51, 52, 1123,
201 QTransform matrixGraph (qLn (0.001), qLn (0.001), qLn (1000),
202 qLn ( 1), qLn ( 100), qLn ( 1),
204 m_transformation.updateTransformFromMatrices (matrixScreen,
206 m_transformation.setModelCoords (m_modelCoords,
211 void TestExport::initTestCase ()
213 initializeLogging (
"engauge_test",
217 m_mainWindow =
new MainWindow (NO_ERROR_REPORT_LOG_FILE,
218 NO_REGRESSION_OPEN_FILE,
219 NO_REGRESSION_IMPORT,
220 NO_GNUPLOT_LOG_FILES,
223 NO_EXTRACT_IMAGE_ONLY,
224 NO_EXTRACT_IMAGE_EXTENSION,
225 NO_LOAD_STARTUP_FILES,
228 m_mainWindow->show ();
231 void TestExport::testCommasInFunctionsForCommasSwitzerland ()
233 QString outputExpectedIfCommaSeparator =
235 "\"0,001\",\"-1,27563\"\n"
236 "\"0,001\",\"-1,27563\"\n"
237 "\"0,01\",\"-1,26683\"\n"
238 "\"0,1\",\"-1,17881\"\n"
240 "10,\"-706,15184\"\n"
241 "100,\"-3997814,14355\"\n"
242 "1000,\"-4541901224,06376\"\n";
243 QString outputExpectedIfPeriodSeparator =
251 "100,-3997814.14355\n"
252 "1000,-4541901224.06376\n";
255 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_COMMA,
256 QLocale::Switzerland,
262 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
263 outputGot == outputExpectedIfPeriodSeparator);
266 void TestExport::testCommasInFunctionsForCommasUnitedStates ()
268 QString outputExpected =
276 "100,-3997814.14355\n"
277 "1000,-4541901224.06376\n";
280 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_COMMA,
281 QLocale::UnitedStates,
287 QVERIFY (outputGot == outputExpected);
290 void TestExport::testCommasInFunctionsForTabsSwitzerland ()
292 QString outputExpectedIfCommaSeparator =
300 "100\t-3997814,14355\n"
301 "1000\t-4541901224,06376\n";
302 QString outputExpectedIfPeriodSeparator =
310 "100\t-3997814.14355\n"
311 "1000\t-4541901224.06376\n";
314 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_TAB,
315 QLocale::Switzerland,
321 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
322 outputGot == outputExpectedIfPeriodSeparator);
325 void TestExport::testCommasInFunctionsForTabsUnitedStates ()
327 QString outputExpected =
335 "100\t-3997814.14355\n"
336 "1000\t-4541901224.06376\n";
339 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_TAB,
340 QLocale::UnitedStates,
346 QVERIFY (outputGot == outputExpected);
349 void TestExport::testCommasInRelationsForCommasSwitzerland ()
351 QString outputExpectedIfCommaSeparator =
353 "\"3,3192\",\"2,08003\"\n"
354 "\"3,3723\",\"2,15796\"\n"
355 "\"3,432\",\"2,23368\"\n"
356 "\"3,4935\",\"2,30883\"\n"
357 "\"3,5539\",\"2,38438\"\n"
358 "\"3,6113\",\"2,46094\"\n"
359 "\"3,6687\",\"2,5375\"\n"
360 "\"3,7261\",\"2,61406\"\n"
361 "\"3,7836\",\"2,69062\"\n"
362 "\"3,841\",\"2,76718\"\n"
363 "\"3,9012\",\"2,84276\"\n"
364 "\"3,9628\",\"2,91791\"\n"
365 "\"4,0231\",\"2,99345\"\n"
366 "\"4,0785\",\"3,07067\"\n"
367 "\"4,1339\",\"3,14789\"\n"
368 "\"4,1932\",\"3,22378\"\n"
369 "\"4,2547\",\"3,29893\"\n"
370 "\"4,3156\",\"3,37426\"\n"
371 "\"4,3731\",\"3,45082\"\n"
372 "\"4,4305\",\"3,52738\"\n"
373 "\"4,4892\",\"3,60349\"\n"
374 "\"4,5486\",\"3,67938\"\n";
375 QString outputExpectedIfPeriodSeparator =
401 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_COMMA,
402 QLocale::Switzerland,
408 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
409 outputGot == outputExpectedIfPeriodSeparator);
412 void TestExport::testCommasInRelationsForCommasUnitedStates ()
414 QString outputExpected =
440 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_COMMA,
441 QLocale::UnitedStates,
447 QVERIFY (outputGot == outputExpected);
450 void TestExport::testCommasInRelationsForTabsSwitzerland ()
452 QString outputExpectedIfCommaSeparator =
476 QString outputExpectedIfPeriodSeparator =
502 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_TAB,
503 QLocale::Switzerland,
509 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
510 outputGot == outputExpectedIfPeriodSeparator);
513 void TestExport::testCommasInRelationsForTabsUnitedStates ()
515 QString outputExpected =
541 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_TAB,
542 QLocale::UnitedStates,
548 QVERIFY (outputGot == outputExpected);
551 void TestExport::testExportOnlyNonRegressionLowerCase ()
553 m_mainWindow->m_isErrorReportRegressionTest = NO_REGRESSION_IMPORT;
554 m_mainWindow->setCurrentFile (STARTUP_DIG_LOWER_CASE);
556 QString outputGot = m_mainWindow->fileNameForExportOnly ();
557 QString outputWanted = STARTUP_DIG_LOWER_CASE;
558 outputWanted = outputWanted.replace (
".dig",
".csv");
560 QVERIFY (outputGot == outputWanted);
563 void TestExport::testExportOnlyNonRegressionUpperCase ()
565 m_mainWindow->m_isErrorReportRegressionTest = NO_REGRESSION_IMPORT;
566 m_mainWindow->setCurrentFile (STARTUP_DIG_UPPER_CASE);
568 QString outputGot = m_mainWindow->fileNameForExportOnly ();
569 QString outputWanted = STARTUP_DIG_UPPER_CASE;
570 outputWanted = outputWanted.replace (
".DIG",
".csv");
572 QVERIFY (outputGot == outputWanted);
575 void TestExport::testExportOnlyRegressionLowerCase ()
577 m_mainWindow->m_isErrorReportRegressionTest = REGRESSION_IMPORT;
578 m_mainWindow->m_regressionFile = STARTUP_DIG_LOWER_CASE;
580 QString outputGot = m_mainWindow->fileNameForExportOnly ();
581 QString outputWanted = STARTUP_DIG_LOWER_CASE;
582 outputWanted = outputWanted.replace (
".dig",
".csv_actual_1");
584 QVERIFY (outputGot == outputWanted);
587 void TestExport::testExportOnlyRegressionUpperCase ()
589 m_mainWindow->m_isErrorReportRegressionTest = REGRESSION_IMPORT;
590 m_mainWindow->m_regressionFile = STARTUP_DIG_UPPER_CASE;
592 QString outputGot = m_mainWindow->fileNameForExportOnly ();
593 QString outputWanted = STARTUP_DIG_UPPER_CASE;
594 outputWanted = outputWanted.replace (
".DIG",
".csv_actual_1");
596 QVERIFY (outputGot == outputWanted);
599 void TestExport::testLogExtrapolationFunctionsAll ()
602 EXPORT_DELIMITER_COMMA,
603 QLocale::UnitedStates);
607 QTextStream str (&dummy);
612 unsigned int numWritesSoFar = 0;
615 CurveLimits curveLimitsMin, curveLimitsMax;
616 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
void setCursorSize(int cursorSize)
Set method for effective cursor size.
void setModelGeneral(const DocumentModelGeneral &modelGeneral)
Set method for DocumentModelGeneral.
Model for DlgSettingsCurveProperties and CmdSettingsCurveProperties.
const CoordSystem & coordSystem() const
Currently active CoordSystem.
CoordScale coordScaleYRadius() const
Get method for linear/log scale on y/radius.
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.
void setModelExport(const DocumentModelExportFormat &modelExport)
Set method for DocumentModelExportFormat.
Details for a specific Point.
CoordScale coordScaleXTheta() const
Get method for linear/log scale on x/theta.
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.
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.
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.