/* Copyright © 2017 Hasan Yavuz Özderya This file is part of serialplot. serialplot is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. serialplot is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with serialplot. If not, see . */ #define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one cpp file #include "catch.hpp" #include "datachunk.h" #include "chunkedbuffer.h" TEST_CASE("DataChunk created empty", "[memory]") { DataChunk c(0, 1000); REQUIRE(c.size() == 0); REQUIRE(c.capacity() == 1000); REQUIRE(c.start() == 0); REQUIRE(c.end() == 0); REQUIRE_FALSE(c.isFull()); REQUIRE(c.left() == 1000); } TEST_CASE("adding data to DataChunk", "[memory]") { DataChunk c(0, 1000); double samples[10] = {1,2,3,4,5,6,7,8,9,10}; c.addSamples(samples, 10); REQUIRE(c.size() == 10); REQUIRE(c.capacity() == 1000); REQUIRE(c.start() == 0); REQUIRE(c.end() == 10); REQUIRE(c.left() == 990); for (int i = 0; i < 10; i++) { REQUIRE(c.sample(i) == samples[i]); } REQUIRE(c.min() == 1); REQUIRE(c.max() == 10); REQUIRE(c.avg() == Approx(5.5)); REQUIRE(c.meanSquare() == Approx(38.5)); } TEST_CASE("filling data chunk", "[memory]") { DataChunk c(0, 1000); for (int i = 0; i < 1000; i++) { double sample = i + 1; c.addSamples(&sample, 1); } REQUIRE(c.size() == 1000); REQUIRE(c.capacity() == 1000); REQUIRE(c.start() == 0); REQUIRE(c.end() == 1000); REQUIRE(c.left() == 0); REQUIRE(c.min() == 1); REQUIRE(c.max() == 1000); 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); }