2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // See LICENSE file in the project root for full license information.
5 #include "CsvReader.hpp"
7 #include <boost/algorithm/string.hpp>
8 #include <boost/test/unit_test.hpp>
12 #include <boost/filesystem.hpp>
14 using namespace armnnUtils;
20 BOOST_TEST_MESSAGE("setup fixture");
25 BOOST_TEST_MESSAGE("teardown fixture");
29 std::string CreateTempCsvFile()
31 std::string fileDir = boost::filesystem::temp_directory_path().c_str();
32 boost::filesystem::path p{fileDir + "/sampleFile.csv"};
35 boost::filesystem::ofstream ofs{p};
36 ofs << "airplane, bicycle , bird , \"m,o,n,k,e,y\"\n";
37 ofs << "banana, shoe, \"ice\"";
39 } catch (std::exception &e)
41 std::cerr << "Unable to write to file at location [" << p.c_str() << "] : " << e.what() << std::endl;
44 return fileDir + "/sampleFile.csv";
47 int CheckStringsMatch(CsvRow &row, unsigned int index, std::string expectedValue)
49 return row.values.at(index).compare(expectedValue);
59 std::string fileDir = boost::filesystem::temp_directory_path().c_str();
60 std::string filePath = fileDir + "/sampleFile.csv";
63 boost::filesystem::remove(filePath);
65 catch (std::exception &e)
67 std::cerr << "Unable to delete file [" << filePath << "] : " << e.what() << std::endl;
73 BOOST_AUTO_TEST_SUITE(CsvReaderTest)
75 BOOST_FIXTURE_TEST_CASE(TestParseVector, TestHelper)
78 std::vector<std::string> csvStrings;
79 csvStrings.reserve(2);
80 csvStrings.push_back("airplane, automobile , bird , \"c,a,t\"");
81 csvStrings.push_back("banana, shoe, \"ice\"");
83 std::vector<CsvRow> row = reader.ParseVector(csvStrings);
87 BOOST_CHECK(row.size() == 2);
89 BOOST_CHECK(row1.values.size() == 4);
90 BOOST_CHECK(CheckStringsMatch(row1, 0, "airplane") == 0);
91 BOOST_CHECK(CheckStringsMatch(row1, 1, "automobile") == 0);
92 BOOST_CHECK(CheckStringsMatch(row1, 2, "bird") == 0);
93 BOOST_CHECK(CheckStringsMatch(row1, 3, "c,a,t") == 0);
95 BOOST_CHECK(row2.values.size() == 3);
96 BOOST_CHECK(CheckStringsMatch(row2, 0, "banana") == 0);
97 BOOST_CHECK(CheckStringsMatch(row2, 1, "shoe") == 0);
98 BOOST_CHECK(CheckStringsMatch(row2, 2, "ice") == 0);
101 BOOST_FIXTURE_TEST_CASE(TestLoadingFileFromDisk, TestHelper)
104 std::string theFilePath = TestHelper::CreateTempCsvFile();
106 std::vector<CsvRow> row = reader.ParseFile(theFilePath);
107 CsvRow row1 = row[0];
108 CsvRow row2 = row[1];
110 BOOST_CHECK(row.size() == 2);
112 BOOST_CHECK(row1.values.size() == 4);
113 BOOST_CHECK(CheckStringsMatch(row1, 0, "airplane") == 0);
114 BOOST_CHECK(CheckStringsMatch(row1, 1, "bicycle") == 0);
115 BOOST_CHECK(CheckStringsMatch(row1, 2, "bird") == 0);
116 BOOST_CHECK(CheckStringsMatch(row1, 3, "m,o,n,k,e,y") == 0);
118 BOOST_CHECK(row2.values.size() == 3);
119 BOOST_CHECK(CheckStringsMatch(row2, 0, "banana") == 0);
120 BOOST_CHECK(CheckStringsMatch(row2, 1, "shoe") == 0);
121 BOOST_CHECK(CheckStringsMatch(row2, 2, "ice") == 0);
124 BOOST_AUTO_TEST_SUITE_END()