# HG changeset patch # User Hasan Yavuz ÖZDERYA # Date 2018-04-15 13:39:33 # Node ID 0d10ab7043e57c71a70ed7d128d5962d7507b01a # Parent f6ca721ac7595473d3c2b9fe7c4c1cdda0ea31c8 added multiple channel test for recorder diff --git a/tests/test_recorder.cpp b/tests/test_recorder.cpp --- a/tests/test_recorder.cpp +++ b/tests/test_recorder.cpp @@ -62,3 +62,46 @@ TEST_CASE("test recording single channel // cleanup if (QFile::exists(fileName)) QFile::remove(fileName); } + +TEST_CASE("test recording multiple channels", "[recorder]") +{ + DataRecorder rec; + TestSource source(3, false); + + // temporary file, remove if exists + auto fileName = QDir::tempPath() + QString("/" TEST_FILE_NAME); + if (QFile::exists(fileName)) QFile::remove(fileName); + + // connect source → sink + source.connectSink(&rec); + + // prepare data + QStringList channelNames({"Channel 1", "Channel 2", "Channel 3"}); + SamplePack samples(5, 3); + for (int ci = 0; ci < 3; ci++) + { + for (int i = 0; i < 5; i++) + { + samples.data(ci)[i] = (ci+1)*(i+1); + } + } + + // test + rec.startRecording(fileName, ",", channelNames); + source._feed(samples); + rec.stopRecording(); + + // read file contents back + QFile recordFile(fileName); + REQUIRE(recordFile.open(QIODevice::ReadOnly | QIODevice::Text)); + // NOTE: mind the extra parantheses, otherwise 'catch' macros fail to compile + REQUIRE((recordFile.readLine() == "Channel 1,Channel 2,Channel 3\n")); + REQUIRE((recordFile.readLine() == "1,2,3\n")); + REQUIRE((recordFile.readLine() == "2,4,6\n")); + REQUIRE((recordFile.readLine() == "3,6,9\n")); + REQUIRE((recordFile.readLine() == "4,8,12\n")); + REQUIRE((recordFile.readLine() == "5,10,15\n")); + + // cleanup + if (QFile::exists(fileName)) QFile::remove(fileName); +}