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 DEBUG_FLAG = false;
33 const QStringList NO_LOAD_STARTUP_FILES;
34 const QString STARTUP_DIG_LOWER_CASE ("/tmp/export_only.dig");
35 const QString STARTUP_DIG_UPPER_CASE ("/tmp/export_only.DIG");
36 const QStringList ONE_LOAD_STARTUP_FILE_LOWER_CASE (STARTUP_DIG_LOWER_CASE);
37 const QStringList ONE_LOAD_STARTUP_FILE_UPPER_CASE (STARTUP_DIG_UPPER_CASE);
38 const
bool REGRESSION_IMPORT = true;
47 bool TestExport::checkCommasInFunctionsForDelimiter (ExportDelimiter delimiter,
48 QLocale::Country country,
55 QTextStream str (&output);
62 unsigned int numWritesSoFar = 0;
65 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
70 exportDelimiterToText (delimiter, NOT_USING_GNUPLOT),
85 bool TestExport::checkCommasInRelationsForDelimiter (ExportDelimiter delimiter,
86 QLocale::Country country,
93 QTextStream str (&output);
100 unsigned int numWritesSoFar = 0;
103 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
107 exportDelimiterToText (delimiter, NOT_USING_GNUPLOT),
122 void TestExport::cleanupTestCase ()
126 void TestExport::initData (
bool isLog,
127 ExportDelimiter delimiter,
128 QLocale::Country country)
130 const QString CURVE_NAME (
"Curve1");
131 const int LINE_WIDTH = 2, POINT_LINE_WIDTH = 1;
132 const ColorPalette LINE_COLOR = COLOR_PALETTE_BLACK, POINT_COLOR = COLOR_PALETTE_BLACK;
133 const int RADIUS = 5;
136 m_document =
new Document (nullImage);
138 m_curvesIncluded.clear ();
139 m_curvesIncluded << CURVE_NAME;
144 CONNECT_AS_FUNCTION_SMOOTH),
149 curveStyles.setCurveStyle (CURVE_NAME, curveStyle);
169 m_modelMainWindow.
setLocale (QLocale::English,
183 m_xThetaValues.clear ();
184 m_xThetaValues << 0.0009999;
185 m_xThetaValues << 0.001;
186 m_xThetaValues << 0.01;
187 m_xThetaValues << 0.1;
189 m_xThetaValues << 10;
190 m_xThetaValues << 100;
191 m_xThetaValues << 1000;
192 QTransform matrixScreen ( 51, 52, 1123,
195 QTransform matrixGraph (qLn (0.001), qLn (0.001), qLn (1000),
196 qLn ( 1), qLn ( 100), qLn ( 1),
198 m_transformation.updateTransformFromMatrices (matrixScreen,
200 m_transformation.setModelCoords (m_modelCoords,
205 void TestExport::initTestCase ()
207 initializeLogging (
"engauge_test",
211 m_mainWindow =
new MainWindow (NO_ERROR_REPORT_LOG_FILE,
212 NO_REGRESSION_OPEN_FILE,
213 NO_REGRESSION_IMPORT,
214 NO_GNUPLOT_LOG_FILES,
217 NO_LOAD_STARTUP_FILES);
219 m_mainWindow->show ();
222 void TestExport::testCommasInFunctionsForCommasSwitzerland ()
224 QString outputExpectedIfCommaSeparator =
226 "\"0,001\",\"-1,27563\"\n"
227 "\"0,001\",\"-1,27563\"\n"
228 "\"0,01\",\"-1,26683\"\n"
229 "\"0,1\",\"-1,17881\"\n"
231 "10,\"-706,15184\"\n"
232 "100,\"-3997814,14355\"\n"
233 "1000,\"-4541901224,06376\"\n";
234 QString outputExpectedIfPeriodSeparator =
242 "100,-3997814.14355\n"
243 "1000,-4541901224.06376\n";
246 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_COMMA,
247 QLocale::Switzerland,
253 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
254 outputGot == outputExpectedIfPeriodSeparator);
257 void TestExport::testCommasInFunctionsForCommasUnitedStates ()
259 QString outputExpected =
267 "100,-3997814.14355\n"
268 "1000,-4541901224.06376\n";
271 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_COMMA,
272 QLocale::UnitedStates,
278 QVERIFY (outputGot == outputExpected);
281 void TestExport::testCommasInFunctionsForTabsSwitzerland ()
283 QString outputExpectedIfCommaSeparator =
291 "100\t-3997814,14355\n"
292 "1000\t-4541901224,06376\n";
293 QString outputExpectedIfPeriodSeparator =
301 "100\t-3997814.14355\n"
302 "1000\t-4541901224.06376\n";
305 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_TAB,
306 QLocale::Switzerland,
312 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
313 outputGot == outputExpectedIfPeriodSeparator);
316 void TestExport::testCommasInFunctionsForTabsUnitedStates ()
318 QString outputExpected =
326 "100\t-3997814.14355\n"
327 "1000\t-4541901224.06376\n";
330 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_TAB,
331 QLocale::UnitedStates,
337 QVERIFY (outputGot == outputExpected);
340 void TestExport::testCommasInRelationsForCommasSwitzerland ()
342 QString outputExpectedIfCommaSeparator =
344 "\"3,3192\",\"2,08003\"\n"
345 "\"3,3723\",\"2,15796\"\n"
346 "\"3,432\",\"2,23368\"\n"
347 "\"3,4935\",\"2,30883\"\n"
348 "\"3,5539\",\"2,38438\"\n"
349 "\"3,6113\",\"2,46094\"\n"
350 "\"3,6687\",\"2,5375\"\n"
351 "\"3,7261\",\"2,61406\"\n"
352 "\"3,7836\",\"2,69062\"\n"
353 "\"3,841\",\"2,76718\"\n"
354 "\"3,9012\",\"2,84276\"\n"
355 "\"3,9628\",\"2,91791\"\n"
356 "\"4,0231\",\"2,99345\"\n"
357 "\"4,0785\",\"3,07067\"\n"
358 "\"4,1339\",\"3,14789\"\n"
359 "\"4,1932\",\"3,22378\"\n"
360 "\"4,2547\",\"3,29893\"\n"
361 "\"4,3156\",\"3,37426\"\n"
362 "\"4,3731\",\"3,45082\"\n"
363 "\"4,4305\",\"3,52738\"\n"
364 "\"4,4892\",\"3,60349\"\n"
365 "\"4,5486\",\"3,67938\"\n";
366 QString outputExpectedIfPeriodSeparator =
392 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_COMMA,
393 QLocale::Switzerland,
399 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
400 outputGot == outputExpectedIfPeriodSeparator);
403 void TestExport::testCommasInRelationsForCommasUnitedStates ()
405 QString outputExpected =
431 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_COMMA,
432 QLocale::UnitedStates,
438 QVERIFY (outputGot == outputExpected);
441 void TestExport::testCommasInRelationsForTabsSwitzerland ()
443 QString outputExpectedIfCommaSeparator =
467 QString outputExpectedIfPeriodSeparator =
493 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_TAB,
494 QLocale::Switzerland,
500 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
501 outputGot == outputExpectedIfPeriodSeparator);
504 void TestExport::testCommasInRelationsForTabsUnitedStates ()
506 QString outputExpected =
532 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_TAB,
533 QLocale::UnitedStates,
539 QVERIFY (outputGot == outputExpected);
542 void TestExport::testExportOnlyNonRegressionLowerCase ()
544 m_mainWindow->m_isErrorReportRegressionTest = NO_REGRESSION_IMPORT;
545 m_mainWindow->setCurrentFile (STARTUP_DIG_LOWER_CASE);
547 QString outputGot = m_mainWindow->fileNameForExportOnly ();
548 QString outputWanted = STARTUP_DIG_LOWER_CASE;
549 outputWanted = outputWanted.replace (
".dig",
".csv");
551 QVERIFY (outputGot == outputWanted);
554 void TestExport::testExportOnlyNonRegressionUpperCase ()
556 m_mainWindow->m_isErrorReportRegressionTest = NO_REGRESSION_IMPORT;
557 m_mainWindow->setCurrentFile (STARTUP_DIG_UPPER_CASE);
559 QString outputGot = m_mainWindow->fileNameForExportOnly ();
560 QString outputWanted = STARTUP_DIG_UPPER_CASE;
561 outputWanted = outputWanted.replace (
".DIG",
".csv");
563 QVERIFY (outputGot == outputWanted);
566 void TestExport::testExportOnlyRegressionLowerCase ()
568 m_mainWindow->m_isErrorReportRegressionTest = REGRESSION_IMPORT;
569 m_mainWindow->m_regressionFile = STARTUP_DIG_LOWER_CASE;
571 QString outputGot = m_mainWindow->fileNameForExportOnly ();
572 QString outputWanted = STARTUP_DIG_LOWER_CASE;
573 outputWanted = outputWanted.replace (
".dig",
".csv_actual_1");
575 QVERIFY (outputGot == outputWanted);
578 void TestExport::testExportOnlyRegressionUpperCase ()
580 m_mainWindow->m_isErrorReportRegressionTest = REGRESSION_IMPORT;
581 m_mainWindow->m_regressionFile = STARTUP_DIG_UPPER_CASE;
583 QString outputGot = m_mainWindow->fileNameForExportOnly ();
584 QString outputWanted = STARTUP_DIG_UPPER_CASE;
585 outputWanted = outputWanted.replace (
".DIG",
".csv_actual_1");
587 QVERIFY (outputGot == outputWanted);
590 void TestExport::testLogExtrapolationFunctionsAll ()
593 EXPORT_DELIMITER_COMMA,
594 QLocale::UnitedStates);
598 QTextStream str (&dummy);
603 unsigned int numWritesSoFar = 0;
606 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.