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 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
73 exportDelimiterToText (delimiter, NOT_USING_GNUPLOT),
88 bool TestExport::checkCommasInRelationsForDelimiter (ExportDelimiter delimiter,
89 QLocale::Country country,
96 QTextStream str (&output);
103 unsigned int numWritesSoFar = 0;
106 exportFile.exportAllPerLineXThetaValuesMerged (m_modelExportOverride,
110 exportDelimiterToText (delimiter, NOT_USING_GNUPLOT),
125 void TestExport::cleanupTestCase ()
129 void TestExport::initData (
bool isLog,
130 ExportDelimiter delimiter,
131 QLocale::Country country)
133 const QString CURVE_NAME (
"Curve1");
134 const int LINE_WIDTH = 2, POINT_LINE_WIDTH = 1;
135 const ColorPalette LINE_COLOR = COLOR_PALETTE_BLACK, POINT_COLOR = COLOR_PALETTE_BLACK;
136 const int RADIUS = 5;
139 m_document =
new Document (nullImage);
141 m_curvesIncluded.clear ();
142 m_curvesIncluded << CURVE_NAME;
147 CONNECT_AS_FUNCTION_SMOOTH),
152 curveStyles.setCurveStyle (CURVE_NAME, curveStyle);
172 m_modelMainWindow.
setLocale (QLocale::English,
186 m_xThetaValues.clear ();
187 m_xThetaValues << 0.0009999;
188 m_xThetaValues << 0.001;
189 m_xThetaValues << 0.01;
190 m_xThetaValues << 0.1;
192 m_xThetaValues << 10;
193 m_xThetaValues << 100;
194 m_xThetaValues << 1000;
195 QTransform matrixScreen ( 51, 52, 1123,
198 QTransform matrixGraph (qLn (0.001), qLn (0.001), qLn (1000),
199 qLn ( 1), qLn ( 100), qLn ( 1),
201 m_transformation.updateTransformFromMatrices (matrixScreen,
203 m_transformation.setModelCoords (m_modelCoords,
208 void TestExport::initTestCase ()
210 initializeLogging (
"engauge_test",
214 m_mainWindow =
new MainWindow (NO_ERROR_REPORT_LOG_FILE,
215 NO_REGRESSION_OPEN_FILE,
216 NO_REGRESSION_IMPORT,
217 NO_GNUPLOT_LOG_FILES,
220 NO_EXTRACT_IMAGE_ONLY,
221 NO_EXTRACT_IMAGE_EXTENSION,
222 NO_LOAD_STARTUP_FILES,
225 m_mainWindow->show ();
228 void TestExport::testCommasInFunctionsForCommasSwitzerland ()
230 QString outputExpectedIfCommaSeparator =
232 "\"0,001\",\"-1,27563\"\n" 233 "\"0,001\",\"-1,27563\"\n" 234 "\"0,01\",\"-1,26683\"\n" 235 "\"0,1\",\"-1,17881\"\n" 237 "10,\"-706,15184\"\n" 238 "100,\"-3997814,14355\"\n" 239 "1000,\"-4541901224,06376\"\n";
240 QString outputExpectedIfPeriodSeparator =
248 "100,-3997814.14355\n" 249 "1000,-4541901224.06376\n";
252 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_COMMA,
253 QLocale::Switzerland,
259 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
260 outputGot == outputExpectedIfPeriodSeparator);
263 void TestExport::testCommasInFunctionsForCommasUnitedStates ()
265 QString outputExpected =
273 "100,-3997814.14355\n" 274 "1000,-4541901224.06376\n";
277 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_COMMA,
278 QLocale::UnitedStates,
284 QVERIFY (outputGot == outputExpected);
287 void TestExport::testCommasInFunctionsForTabsSwitzerland ()
289 QString outputExpectedIfCommaSeparator =
297 "100\t-3997814,14355\n" 298 "1000\t-4541901224,06376\n";
299 QString outputExpectedIfPeriodSeparator =
307 "100\t-3997814.14355\n" 308 "1000\t-4541901224.06376\n";
311 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_TAB,
312 QLocale::Switzerland,
318 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
319 outputGot == outputExpectedIfPeriodSeparator);
322 void TestExport::testCommasInFunctionsForTabsUnitedStates ()
324 QString outputExpected =
332 "100\t-3997814.14355\n" 333 "1000\t-4541901224.06376\n";
336 bool success = checkCommasInFunctionsForDelimiter (EXPORT_DELIMITER_TAB,
337 QLocale::UnitedStates,
343 QVERIFY (outputGot == outputExpected);
346 void TestExport::testCommasInRelationsForCommasSwitzerland ()
348 QString outputExpectedIfCommaSeparator =
350 "\"3,3192\",\"2,08003\"\n" 351 "\"3,3723\",\"2,15796\"\n" 352 "\"3,432\",\"2,23368\"\n" 353 "\"3,4935\",\"2,30883\"\n" 354 "\"3,5539\",\"2,38438\"\n" 355 "\"3,6113\",\"2,46094\"\n" 356 "\"3,6687\",\"2,5375\"\n" 357 "\"3,7261\",\"2,61406\"\n" 358 "\"3,7836\",\"2,69062\"\n" 359 "\"3,841\",\"2,76718\"\n" 360 "\"3,9012\",\"2,84276\"\n" 361 "\"3,9628\",\"2,91791\"\n" 362 "\"4,0231\",\"2,99345\"\n" 363 "\"4,0785\",\"3,07067\"\n" 364 "\"4,1339\",\"3,14789\"\n" 365 "\"4,1932\",\"3,22378\"\n" 366 "\"4,2547\",\"3,29893\"\n" 367 "\"4,3156\",\"3,37426\"\n" 368 "\"4,3731\",\"3,45082\"\n" 369 "\"4,4305\",\"3,52738\"\n" 370 "\"4,4892\",\"3,60349\"\n" 371 "\"4,5486\",\"3,67938\"\n";
372 QString outputExpectedIfPeriodSeparator =
398 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_COMMA,
399 QLocale::Switzerland,
405 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
406 outputGot == outputExpectedIfPeriodSeparator);
409 void TestExport::testCommasInRelationsForCommasUnitedStates ()
411 QString outputExpected =
437 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_COMMA,
438 QLocale::UnitedStates,
444 QVERIFY (outputGot == outputExpected);
447 void TestExport::testCommasInRelationsForTabsSwitzerland ()
449 QString outputExpectedIfCommaSeparator =
473 QString outputExpectedIfPeriodSeparator =
499 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_TAB,
500 QLocale::Switzerland,
506 QVERIFY (outputGot == outputExpectedIfCommaSeparator ||
507 outputGot == outputExpectedIfPeriodSeparator);
510 void TestExport::testCommasInRelationsForTabsUnitedStates ()
512 QString outputExpected =
538 bool success = checkCommasInRelationsForDelimiter (EXPORT_DELIMITER_TAB,
539 QLocale::UnitedStates,
545 QVERIFY (outputGot == outputExpected);
548 void TestExport::testExportOnlyNonRegressionLowerCase ()
550 m_mainWindow->m_isErrorReportRegressionTest = NO_REGRESSION_IMPORT;
551 m_mainWindow->setCurrentFile (STARTUP_DIG_LOWER_CASE);
553 QString outputGot = m_mainWindow->fileNameForExportOnly ();
554 QString outputWanted = STARTUP_DIG_LOWER_CASE;
555 outputWanted = outputWanted.replace (
".dig",
".csv");
557 QVERIFY (outputGot == outputWanted);
560 void TestExport::testExportOnlyNonRegressionUpperCase ()
562 m_mainWindow->m_isErrorReportRegressionTest = NO_REGRESSION_IMPORT;
563 m_mainWindow->setCurrentFile (STARTUP_DIG_UPPER_CASE);
565 QString outputGot = m_mainWindow->fileNameForExportOnly ();
566 QString outputWanted = STARTUP_DIG_UPPER_CASE;
567 outputWanted = outputWanted.replace (
".DIG",
".csv");
569 QVERIFY (outputGot == outputWanted);
572 void TestExport::testExportOnlyRegressionLowerCase ()
574 m_mainWindow->m_isErrorReportRegressionTest = REGRESSION_IMPORT;
575 m_mainWindow->m_regressionFile = STARTUP_DIG_LOWER_CASE;
577 QString outputGot = m_mainWindow->fileNameForExportOnly ();
578 QString outputWanted = STARTUP_DIG_LOWER_CASE;
579 outputWanted = outputWanted.replace (
".dig",
".csv_actual_1");
581 QVERIFY (outputGot == outputWanted);
584 void TestExport::testExportOnlyRegressionUpperCase ()
586 m_mainWindow->m_isErrorReportRegressionTest = REGRESSION_IMPORT;
587 m_mainWindow->m_regressionFile = STARTUP_DIG_UPPER_CASE;
589 QString outputGot = m_mainWindow->fileNameForExportOnly ();
590 QString outputWanted = STARTUP_DIG_UPPER_CASE;
591 outputWanted = outputWanted.replace (
".DIG",
".csv_actual_1");
593 QVERIFY (outputGot == outputWanted);
596 void TestExport::testLogExtrapolationFunctionsAll ()
599 EXPORT_DELIMITER_COMMA,
600 QLocale::UnitedStates);
604 QTextStream str (&dummy);
609 unsigned int numWritesSoFar = 0;
612 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.