# HG changeset patch # User Lucas Thompson # Date 1523955830 -3600 # Node ID 04caefd353913488c31e4442fdff2c7ea96d99e7 # Parent 9d4d4de3dcedf745af75119c8fd6da6e81fc967a Add failing test for non zero selection start diff -r 9d4d4de3dced -r 04caefd35391 data/fileio/test/CSVStreamWriterTest.h --- a/data/fileio/test/CSVStreamWriterTest.h Tue Apr 17 10:03:50 2018 +0100 +++ b/data/fileio/test/CSVStreamWriterTest.h Tue Apr 17 10:03:50 2018 +0100 @@ -37,12 +37,19 @@ void setDefinite(bool) override {} bool wasCancelled() const override { return m_isCancelled(); } void setMessage(QString) override {} - void setProgress(int) override { ++m_calls; } + void setProgress(int p) override + { + ++m_calls; + m_percentageLog.push_back(p); + } + size_t getCallCount() const { return m_calls; } + std::vector getPercentageLog() const { return m_percentageLog; } void reset() { m_calls = 0; } private: size_t m_calls = 0; std::function m_isCancelled; + std::vector m_percentageLog; }; } // namespace @@ -169,6 +176,77 @@ QVERIFY( cancelMidway.getCallCount() == 3 ); QVERIFY( cancelledMidway == false ); } + + void zeroStartTimeReportsPercentageCorrectly() + { + MockWaveModel mwm({ DC, DC }, 16, 4); + StubReporter reporter { []() -> bool { return false; } }; + std::ostringstream oss; + const auto succeeded = CSVStreamWriter::writeInChunks( + oss, + mwm, + &reporter, + ",", + DataExportDefaults, + 4 + ); + QVERIFY( succeeded == true ); + QVERIFY( reporter.getCallCount() == 6 ); + const std::vector expectedCallLog { + 16, + 33, + 50, + 66, + 83, + 100 + }; + QVERIFY( reporter.getPercentageLog() == expectedCallLog ); + QVERIFY( oss.str() == getExpectedString() ); + } + + void nonZeroStartTimeReportsPercentageCorrectly() + { + MockWaveModel mwm({ DC, DC }, 16, 4); + StubReporter reporter { []() -> bool { return false; } }; + std::ostringstream oss; + const auto writeSubSection = CSVStreamWriter::writeInChunks( + oss, + mwm, + {4, 20}, + &reporter, + ",", + DataExportDefaults, + 4 + ); + QVERIFY( reporter.getCallCount() == 4 ); + const std::vector expectedCallLog { + 25, + 50, + 75, + 100 + }; + QVERIFY( reporter.getPercentageLog() == expectedCallLog ); + QVERIFY( writeSubSection == true ); + const std::string expectedOutput { + "4,1,1\n" + "5,1,1\n" + "6,1,1\n" + "7,1,1\n" + "8,1,1\n" + "9,1,1\n" + "10,1,1\n" + "11,1,1\n" + "12,1,1\n" + "13,1,1\n" + "14,1,1\n" + "15,1,1\n" + "16,1,1\n" + "17,1,1\n" + "18,1,1\n" + "19,1,1" + }; + QVERIFY( oss.str() == expectedOutput ); + } }; #endif \ No newline at end of file