ArmNN
 20.05
CsvReaderTest.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #include "CsvReader.hpp"
6 
7 #include <boost/test/unit_test.hpp>
8 
9 #include <iostream>
10 #include <string>
11 #include <boost/filesystem.hpp>
12 #include <boost/optional.hpp>
13 
14 using namespace armnnUtils;
15 
16 namespace {
17 struct TestHelper {
18 
19  TestHelper()
20  {
21  BOOST_TEST_MESSAGE("setup fixture");
22  }
23 
24  ~TestHelper()
25  {
26  BOOST_TEST_MESSAGE("teardown fixture");
27  TearDown();
28  }
29 
30  std::string CreateTempCsvFile()
31  {
32  boost::filesystem::path fileDir = boost::filesystem::temp_directory_path();
33  boost::filesystem::path p{fileDir / boost::filesystem::unique_path("%%%%-%%%%-%%%%.csv")};
34  try
35  {
36  boost::filesystem::ofstream ofs{p};
37  ofs << "airplane, bicycle , bird , \"m,o,n,k,e,y\"\n";
38  ofs << "banana, shoe, \"ice\"";
39  ofs.close();
40  } catch (std::exception &e)
41  {
42  std::cerr << "Unable to write to file at location [" << p.c_str() << "] : " << e.what() << std::endl;
43  BOOST_TEST(false);
44  }
45 
46  m_CsvFile = p;
47  return p.string();
48  }
49 
50  int CheckStringsMatch(CsvRow &row, unsigned int index, std::string expectedValue)
51  {
52  return row.values.at(index).compare(expectedValue);
53  }
54 
55  void TearDown()
56  {
57  RemoveCsvFile();
58  }
59 
60  void RemoveCsvFile()
61  {
62  if (m_CsvFile)
63  {
64  try
65  {
66  boost::filesystem::remove(*m_CsvFile);
67  }
68  catch (std::exception &e)
69  {
70  std::cerr << "Unable to delete file [" << *m_CsvFile << "] : " << e.what() << std::endl;
71  BOOST_TEST(false);
72  }
73  }
74  }
75 
76  boost::optional<boost::filesystem::path> m_CsvFile;
77 };
78 }
79 
80 BOOST_AUTO_TEST_SUITE(CsvReaderTest)
81 
82 BOOST_FIXTURE_TEST_CASE(TestParseVector, TestHelper)
83 {
84  CsvReader reader;
85  std::vector<std::string> csvStrings;
86  csvStrings.reserve(2);
87  csvStrings.push_back("airplane, automobile , bird , \"c,a,t\"");
88  csvStrings.push_back("banana, shoe, \"ice\"");
89 
90  std::vector<CsvRow> row = reader.ParseVector(csvStrings);
91  CsvRow row1 = row[0];
92  CsvRow row2 = row[1];
93 
94  BOOST_CHECK(row.size() == 2);
95 
96  BOOST_CHECK(row1.values.size() == 4);
97  BOOST_CHECK(CheckStringsMatch(row1, 0, "airplane") == 0);
98  BOOST_CHECK(CheckStringsMatch(row1, 1, "automobile") == 0);
99  BOOST_CHECK(CheckStringsMatch(row1, 2, "bird") == 0);
100  BOOST_CHECK(CheckStringsMatch(row1, 3, "c,a,t") == 0);
101 
102  BOOST_CHECK(row2.values.size() == 3);
103  BOOST_CHECK(CheckStringsMatch(row2, 0, "banana") == 0);
104  BOOST_CHECK(CheckStringsMatch(row2, 1, "shoe") == 0);
105  BOOST_CHECK(CheckStringsMatch(row2, 2, "ice") == 0);
106 }
107 
108 BOOST_FIXTURE_TEST_CASE(TestLoadingFileFromDisk, TestHelper)
109 {
110  CsvReader reader;
111  std::string theFilePath = TestHelper::CreateTempCsvFile();
112 
113  std::vector<CsvRow> row = reader.ParseFile(theFilePath);
114  CsvRow row1 = row[0];
115  CsvRow row2 = row[1];
116 
117  BOOST_CHECK(row.size() == 2);
118 
119  BOOST_CHECK(row1.values.size() == 4);
120  BOOST_CHECK(CheckStringsMatch(row1, 0, "airplane") == 0);
121  BOOST_CHECK(CheckStringsMatch(row1, 1, "bicycle") == 0);
122  BOOST_CHECK(CheckStringsMatch(row1, 2, "bird") == 0);
123  BOOST_CHECK(CheckStringsMatch(row1, 3, "m,o,n,k,e,y") == 0);
124 
125  BOOST_CHECK(row2.values.size() == 3);
126  BOOST_CHECK(CheckStringsMatch(row2, 0, "banana") == 0);
127  BOOST_CHECK(CheckStringsMatch(row2, 1, "shoe") == 0);
128  BOOST_CHECK(CheckStringsMatch(row2, 2, "ice") == 0);
129 }
130 
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
BOOST_FIXTURE_TEST_CASE(TestParseVector, TestHelper)
std::vector< std::string > values
Definition: CsvReader.hpp:15
BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)
static std::vector< CsvRow > ParseVector(const std::vector< std::string > &csvVector)
Definition: CsvReader.cpp:52
BOOST_AUTO_TEST_SUITE_END()
static std::vector< CsvRow > ParseFile(const std::string &csvFile)
Definition: CsvReader.cpp:32