# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2017-07-15 12:04:12 # Node ID a85782edc8e81cf0f347f2e65816f0493fcc12c4 # Parent c1dbdeb915edffb16ac125550e8bbabe8d5b529e initial tests for ChunkedBuffer diff --git a/src/chunkedbuffer.cpp b/src/chunkedbuffer.cpp --- a/src/chunkedbuffer.cpp +++ b/src/chunkedbuffer.cpp @@ -25,10 +25,10 @@ ChunkedBuffer::ChunkedBuffer() _size = 0; // create first chunk - addChunk(); + addNewChunk(); } -~ChunkedBuffer::ChunkedBuffer() +ChunkedBuffer::~ChunkedBuffer() { for (auto chunk : chunks) { @@ -43,10 +43,10 @@ void ChunkedBuffer::addSamples(double* s while (i < size) { // select chunk to add data - auto chunk = chunk->last(); + auto chunk = chunks.last(); if (chunk->isFull()) { - chunk = addChunk(); // create a new chunk + chunk = addNewChunk(); // create a new chunk } // add data to chunk @@ -58,7 +58,7 @@ void ChunkedBuffer::addSamples(double* s _size += size; } -DataChunk* ChunkedBuffer::addChunk() +DataChunk* ChunkedBuffer::addNewChunk() { auto chunk = new DataChunk(_size, CHUNK_SIZE); chunks.append(chunk); @@ -76,8 +76,8 @@ QRectF ChunkedBuffer::boundingRect() con // update on 'addSamples' and when dropping chunks // find ymin and ymax - ymin = chunks->first().min(); - ymax = chunks->first().max(); + double ymin = chunks.first()->min(); + double ymax = chunks.first()->max(); for (auto c : chunks) { ymin = std::min(ymin, c->min()); diff --git a/src/chunkedbuffer.h b/src/chunkedbuffer.h --- a/src/chunkedbuffer.h +++ b/src/chunkedbuffer.h @@ -24,6 +24,8 @@ #include #include +#include "datachunk.h" + #define CHUNK_SIZE (1024) class ChunkedBuffer @@ -45,6 +47,7 @@ private: size_t numChunks; QList chunks; + DataChunk* addNewChunk(); }; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -23,7 +23,9 @@ find_package(Qt5Widgets) include_directories("../src") add_executable(Test EXCLUDE_FROM_ALL - test.cpp ../src/datachunk.cpp) + test.cpp + ../src/datachunk.cpp + ../src/chunkedbuffer.cpp) add_test(NAME test1 COMMAND Test) qt5_use_modules(Test Widgets) diff --git a/tests/test.cpp b/tests/test.cpp --- a/tests/test.cpp +++ b/tests/test.cpp @@ -21,6 +21,7 @@ #include "catch.hpp" #include "datachunk.h" +#include "chunkedbuffer.h" TEST_CASE("DataChunk created empty", "[memory]") { @@ -77,3 +78,22 @@ TEST_CASE("filling data chunk", "[memory REQUIRE(c.avg() == Approx(500.5)); REQUIRE(c.meanSquare() == Approx(333833.5)); } + +TEST_CASE("ChunkedBuffer created empty", "[memory]") +{ + ChunkedBuffer b; + + REQUIRE(b.size() == 0); + REQUIRE(b.boundingRect() == QRectF(0,0,0,0)); +} + +TEST_CASE("ChunkedBuffer adding data", "[memory]") +{ + ChunkedBuffer b; + + // add some small data + double samples[10] = {1,2,3,4,5,6,7,8,9,10}; + b.addSamples(samples, 10); + + REQUIRE(b.size() == 10); +}