/********************************************************************* * Software License Agreement (AGPL-3 License) * * OpenViBE SDK Test Software * Based on OpenViBE V1.1.0, Copyright (C) Inria, 2006-2015 * Copyright (C) Inria, 2015-2017,V1.0 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License version 3, * as published by the Free Software Foundation. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. * If not, see . */ #include "gtest/gtest.h" #include "csv/ovICSV.h" #include #include #include #include static std::string directoryPath = ""; TEST(CSV_Writer_Test_Case, signalWriterNormalGoodSignal) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVSignalWriter01.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::Signal); ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8)); double index = 0.0; while (index < 1.2) { const double epoch = index / 0.5; ASSERT_TRUE(handler->addSample({ index, index + 0.125, { -10.10, -5.05, 0.00, 5.05, 10.10 }, size_t(epoch) })); if (index == 0.25 || index == 0.75) { ASSERT_TRUE(handler->addEvent(35000, index, 0.0)); } index += 0.125; } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, signalWriterNoStimulations) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVSignalWriter02.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::Signal); ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8)); ASSERT_TRUE(handler->noEventsUntilDate(2.0)); double index = 0.0; while (index < 1.2) { const double epoch = index / 0.5; ASSERT_TRUE(handler->addSample({ index, index + 0.125, { -10.10, -5.05, 0.00, 5.05, 10.10 }, size_t(epoch) })); index += 0.125; } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, signalWriterNoFileOpen) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); handler->setFormatType(OpenViBE::CSV::EStreamType::Signal); ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8)); double index = 0.0; while (index < 1.2) { const double epoch = index / 0.5; ASSERT_TRUE(handler->addSample({ index, index + 0.125, { -10.10, -5.05, 0.00, 5.05, 10.10 }, size_t(epoch) })); index += 0.125; } ASSERT_FALSE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, signalWriterWrongInputType) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); handler->setFormatType(OpenViBE::CSV::EStreamType::Spectrum); ASSERT_FALSE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8)); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, signalWriterWrongMatrixSize) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVSignalWriter05.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::Signal); ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8)); ASSERT_FALSE(handler->addSample({ 0, 0.125, { -20.20, -10.10, -5.05, 5.05, 10.10, 20.20 }, 0 })); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } // should have nothing in the file TEST(CSV_Writer_Test_Case, signalWriterTonsOfSignalWithoutSetNoEventsUntilDate) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVSignalWriter06.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::Signal); ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8)); double time = 0.0; while (time < 100.0) { ASSERT_TRUE(handler->addSample({ time, time + 0.125, { -20.20, -10.10, 0.0, 10.10, 20.20 }, size_t(time / 0.125) })); time += 0.125; } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); releaseCSVHandler(handler); } // file should be full TEST(CSV_Writer_Test_Case, signalWriterTonsOfSignalWithSetNoEventsUntilDate) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVSignalWriter07.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::Signal); ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8)); ASSERT_TRUE(handler->noEventsUntilDate(100.001)); double time = 0.0; while (time < 100.0) { ASSERT_TRUE(handler->addSample({ time, time + 0.125, { -20.20, -10.10, 0.0, 10.10, 20.20 }, size_t(time / 0.5) })); time += 0.125; } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->writeAllDataToFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, signalWriterOnlyLastMatrix) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); handler->setLastMatrixOnlyMode(true); const std::string filename = directoryPath + "testCSVSignalWriter08.csv"; const std::string expectedFileContent( "Time:8Hz,Epoch,O1,O2,Pz,P1,P2,Event Id,Event Date,Event Duration\n1.0000000000,2,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,35000,1.0000000000,0.0000000000\n1.1250000000,2,-10.1000000000,-5.0500000000,0.0000000000,5.0500000000,10.1000000000,,,\n"); ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::Signal); ASSERT_TRUE(handler->setSignalInformation({ "O1", "O2", "Pz", "P1", "P2" }, 8, 8)); double index = 0.0; while (index < 1.2) { const double epoch = index / 0.5; ASSERT_TRUE(handler->addSample({ index, index + 0.125, { -10.10, -5.05, 0.00, 5.05, 10.10 }, size_t(epoch) })); if (index == 0.25 || index == 0.75 || index == 1.0) { ASSERT_TRUE(handler->addEvent(35000, index, 0.0)); } index += 0.125; } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeAllDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); std::ifstream t(filename); const std::string out((std::istreambuf_iterator(t)), std::istreambuf_iterator()); ASSERT_STREQ(out.c_str(), expectedFileContent.c_str()); } TEST(CSV_Writer_Test_Case, spectrumWriterNormalGoodSignal) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVSpectrumWriter01.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::Spectrum); std::vector frequencyAbscissa(64); std::iota(frequencyAbscissa.begin(), frequencyAbscissa.end(), 0.0); ASSERT_TRUE(handler->setSpectrumInformation({ "O1", "O2" }, frequencyAbscissa, 256)); double time = 0; for (size_t i = 0; i < 10; ++i) { const size_t epoch = i / 4; std::vector sample(128); std::iota(sample.begin(), sample.end(), -64); ASSERT_TRUE(handler->addSample({ time, time + 1.0, sample, epoch })); time += 0.125; if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, time, 1.0)); } } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, spectrumWriterWrongInputType) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVSpectrumWriter02.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::Signal); std::vector frequencyAbscissa(64); std::iota(frequencyAbscissa.begin(), frequencyAbscissa.end(), 0.0); ASSERT_FALSE(handler->setSpectrumInformation({ "O1", "O2" }, frequencyAbscissa, 256)); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, spectrumWriterWrongMatrixSize) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVSpectrumWriter03.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::Spectrum); std::vector frequencyAbscissa(64); std::iota(frequencyAbscissa.begin(), frequencyAbscissa.end(), 0.0); ASSERT_TRUE(handler->setSpectrumInformation({ "O1", "O2" }, frequencyAbscissa, 256)); ASSERT_FALSE(handler->addSample({ 0, 1, { -20.20, -10.10, 0.0, 10.10, 20.20 }, 0 })); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, matrixWriterNormalGoodSignal) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVMatrixWriter01.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "LA", "LB", "1", "2", "X", "Y" })); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20 }, epoch })); if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); } } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, matrixWriterEmptyLabels) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVMatrixWriter02.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "", "", "", "", "", "" })); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20 }, epoch })); if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); } } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, matrixWithDifferentsDimensionSizes) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVMatrixWriter03.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 1, 4 }, { "L1", "A", "B", "C", "D" })); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -10.10, 10.10, 20.20 }, epoch })); if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); } } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, matrixWriterWrongMatrixSize) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVMatrixWriter04.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "", "", "", "", "", "" })); ASSERT_FALSE(handler->addSample({ 0, 1.0, { -25.25, -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20, 25.25 }, 0 })); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, matrixWithDifferentsDimensionSizes2) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVMatrixWriter05.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix); ASSERT_TRUE( handler->setStreamedMatrixInformation({ 6, 8, 2 }, { "L1", "L2", "L3", "L4", "L5", "L6", "A1", "B2", "C3", "D4", "E5", "F6", "G7", "H8", "X", "Y" })); std::vector values(96); std::iota(values.begin(), values.end(), 0.0); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, values, epoch })); if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); } } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, matrixWithDifferentsDimensionSizes3) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVMatrixWriter06.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 4, 1, 4 }, { "L1", "L2", "L3", "L4", "X", "R1", "R2", "R3", "R4" })); std::vector values(16); std::iota(values.begin(), values.end(), 0.0); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, values, epoch })); if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); } } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } // As of 10/01/2017 (commit a11210cf1c3fd81bb52095c7c9c6006c760218a2), this is valid for TEST(CSV_Writer_Test_Case, matrixWriterWithInvalidTime) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVMatrixWriter07.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 1, 1, 1 }, { "X", "Y", "Z" })); ASSERT_FALSE(handler->addSample({ 1.0, 0, { -20.20, -15.15, -10.10 }, 0 })); ASSERT_FALSE(handler->addSample({ -1.0, 0, { -20.20, -15.15, -10.10 }, 1 })); ASSERT_FALSE(handler->addSample({ -1.0, -0.5, { -20.20, -15.15, -10.10 }, 2 })); ASSERT_FALSE(handler->addSample({ 1.0, -1.0, { -20.20, -15.15, -10.10 }, 3 })); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, matrixWriterOnlyLastMatrix) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); handler->setLastMatrixOnlyMode(true); const std::string filename = directoryPath + "testCSVMatrixWriter08.csv"; const std::string expectedFileContent( "Time:2x2x2,End Time,LA:1:X,LA:1:Y,LA:2:X,LA:2:Y,LB:1:X,LB:1:Y,LB:2:X,LB:2:Y,Event Id,Event Date,Event Duration\n49.0000000000,50.0000000000,49.0000000000,1.0000000000,2.0000000000,3.0000000000,4.0000000000,5.0000000000,6.0000000000,7.0000000000,,,\n"); ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::StreamedMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "LA", "LB", "1", "2", "X", "Y" })); ASSERT_TRUE(handler->writeHeaderToFile()); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i) + 1.0, { double(i), 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 }, epoch })); if (i == 3 || i == 5 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i) + 3.5, 1.0)); } } ASSERT_TRUE(handler->writeAllDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); std::ifstream t(filename); const std::string out((std::istreambuf_iterator(t)), std::istreambuf_iterator()); ASSERT_STREQ(out.c_str(), expectedFileContent.c_str()); } TEST(CSV_Writer_Test_Case, featureVectorNormalGoodSignal) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVFeatureVectorWriter01.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::FeatureVector); ASSERT_TRUE(handler->setFeatureVectorInformation({ "F1", "F2", "F3" })); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10 }, epoch })); if (i == 5 || i == 3 || i == 7) { ASSERT_TRUE(handler->addEvent(35001, double(i)+3.5, 1.0)); } } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, featureVectorEmptyLabels) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVFeatureVectorWriter02.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::FeatureVector); ASSERT_TRUE(handler->setFeatureVectorInformation({ "", "", "" })); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10 }, epoch })); } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, featureVectorWrongVectorSize) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVFeatureVectorWriter03.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::FeatureVector); ASSERT_TRUE(handler->setFeatureVectorInformation({ "F1", "F2", "F3" })); ASSERT_FALSE(handler->addSample({ 0, 1.0, { -20.20, -15.15, -10.10, 12 }, 0 })); ASSERT_FALSE(handler->addSample({ 1.0, 2.0, { -20.20, -15.15 }, 1 })); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, covarianceMatrixWriterNormalGoodSignal) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVCovarMatrixWriter01.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::CovarianceMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "C1", "C2", "C1", "C2", "Matrix 1", "Matrix 2" })); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20 }, epoch })); } handler->noEventsUntilDate(20.0); ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeAllDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, covarianceMatrixWriterEmptyLabels) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVCovarMatrixWriter02.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::CovarianceMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "", "", "", "", "", "" })); for (size_t i = 0; i < 50; ++i) { const size_t epoch = i / 10; ASSERT_TRUE(handler->addSample({ double(i), double(i)+1.0, { -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20 }, epoch })); } ASSERT_TRUE(handler->writeHeaderToFile()); ASSERT_TRUE(handler->writeAllDataToFile()); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } TEST(CSV_Writer_Test_Case, covarianceMatrixWriterWrongMatrixSize) { OpenViBE::CSV::ICSVHandler* handler = OpenViBE::CSV::createCSVHandler(); const std::string filename = directoryPath + "testCSVCovarMatrixWriter04.csv"; ASSERT_TRUE(handler->openFile(filename, OpenViBE::CSV::EFileAccessMode::Write)); handler->setFormatType(OpenViBE::CSV::EStreamType::CovarianceMatrix); ASSERT_TRUE(handler->setStreamedMatrixInformation({ 2, 2, 2 }, { "", "", "", "", "", "" })); ASSERT_FALSE(handler->addSample({ 0, 1.0, { -25.25, -20.20, -15.15, -10.10, -5.05, 5.05, 10.10, 15.15, 20.20, 25.25 }, 0 })); ASSERT_TRUE(handler->closeFile()); releaseCSVHandler(handler); } int uoCSVWriterTest(int argc, char* argv[]) { if (argv[1] != nullptr) { directoryPath = argv[1]; } testing::InitGoogleTest(&argc, argv); ::testing::GTEST_FLAG(filter) = "CSV_Writer_Test_Case.*"; return RUN_ALL_TESTS(); }