From f5645e9de2db7e75eaf75b1a06f09b6be642beb2 Mon Sep 17 00:00:00 2001
From: jstark <jstark@mpi-cbg.de>
Date: Wed, 29 Dec 2021 14:28:50 +0100
Subject: [PATCH] Adding unit test for CSVReader.

---
 src/CSVReader/tests/CSVReader_unit_test.cpp | 56 +++++++++++++++++++++
 src/CSVReader/tests/char.csv                |  5 ++
 src/CSVReader/tests/float.csv               |  4 ++
 3 files changed, 65 insertions(+)
 create mode 100644 src/CSVReader/tests/CSVReader_unit_test.cpp
 create mode 100644 src/CSVReader/tests/char.csv
 create mode 100644 src/CSVReader/tests/float.csv

diff --git a/src/CSVReader/tests/CSVReader_unit_test.cpp b/src/CSVReader/tests/CSVReader_unit_test.cpp
new file mode 100644
index 00000000..d1077896
--- /dev/null
+++ b/src/CSVReader/tests/CSVReader_unit_test.cpp
@@ -0,0 +1,56 @@
+//
+// Created by jstark on 28.12.21.
+//
+#define BOOST_TEST_DYN_LINK
+#include <boost/test/unit_test.hpp>
+#include "CSVReader/CSVReader.hpp"
+
+BOOST_AUTO_TEST_SUITE(CSVReaderTestSuite)
+BOOST_AUTO_TEST_CASE(csv_reader_float)
+		{
+				// Read csv file into vector while linearizing
+				const std::string csv_file = "float.csv"; // csv file to be read
+				openfpm::vector<float> v_lin; // Vector to which csv file will be read to
+				size_t m, n; // Number of rows m and columns n
+				
+				read_csv_to_vector(csv_file, v_lin, m, n);
+				
+				BOOST_CHECK(m == 4);
+				BOOST_CHECK(n == 3);
+				BOOST_CHECK(m * n == v_lin.size());
+				
+				for(int i = 0; i < v_lin.size() / n; ++i)
+				{
+					BOOST_CHECK( v_lin.get(i * n) == i + 1);
+					BOOST_CHECK( v_lin.get(i * n + 1) == (i + 1) * 2);
+					BOOST_CHECK( v_lin.get(i * n + 2) == v_lin.get(i * n) * v_lin.get(i * n + 1));
+				}
+			
+		}
+
+
+BOOST_AUTO_TEST_CASE(csv_reader_char)
+		{
+				// Read csv file into vector while linearizing
+				const std::string csv_file = "char.csv"; // csv file to be read
+				openfpm::vector<char> v_lin; // Vector to which csv file will be read to
+				size_t m, n; // Number of rows m and columns n
+				
+				read_csv_to_vector(csv_file, v_lin, m, n);
+				
+				BOOST_CHECK(m == 5);
+				BOOST_CHECK(n == 2);
+				BOOST_CHECK(m * n == v_lin.size());
+				
+				
+				openfpm::vector<std::string> col1 = {"a", "b", "c", "d", "e"};
+				openfpm::vector<std::string> col2 = {"antilope", "ballena", "camel", "dackel", "elefant"};
+				
+				for(int i = 0; i < v_lin.size() / n; ++i)
+				{
+					BOOST_CHECK(col1.get(i).compare(v_lin.get(i * n)));
+					BOOST_CHECK(col2.get(i).compare(v_lin.get(i * n + 1)));
+				}
+			
+		}
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/CSVReader/tests/char.csv b/src/CSVReader/tests/char.csv
new file mode 100644
index 00000000..91fcfcd5
--- /dev/null
+++ b/src/CSVReader/tests/char.csv
@@ -0,0 +1,5 @@
+a,antilope
+b,ballena
+c,camel
+d,dackel
+e,elefant
\ No newline at end of file
diff --git a/src/CSVReader/tests/float.csv b/src/CSVReader/tests/float.csv
new file mode 100644
index 00000000..26f59ab6
--- /dev/null
+++ b/src/CSVReader/tests/float.csv
@@ -0,0 +1,4 @@
+1,2,2
+2,4,8
+3,6,18
+4,8,32
\ No newline at end of file
-- 
GitLab