c-resources/CPlusPlus20ForProgrammers-m.../examples/libraries/rapidcsv/tests/test037.cpp

85 lines
3.7 KiB
C++

// test037.cpp - double quote handling
#include <rapidcsv.h>
#include "unittest.h"
int main()
{
int rv = 0;
std::string csv =
"1997,Ford,,Truck\n"
" 1997, Ford, E350, Truck\n"
" 1997 , Ford , E350 , Truck \n"
"\"1997\",\"Ford\",\"E350\",\"Truck\"\n"
"1997,Ford,E350,\"Super, luxurious truck\"\n"
"1997,Ford,E350,\"Super, \"\"luxurious, fast\"\" truck\"\n"
"Los Angeles,34°03'N,118°15'W,US\n"
"New York City,40°42'46\"N,74°00'21\"W,US\n"
"Paris,48°51'24\"N,2°21'03\"E,France\n"
;
std::string path = unittest::TempPath();
unittest::WriteFile(path, csv);
try
{
rapidcsv::Document doc(path, rapidcsv::LabelParams(-1, -1));
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(0, 0), "1997");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(1, 0), "Ford");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(2, 0), "");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(3, 0), "Truck");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(0, 1), " 1997");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(1, 1), " Ford");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(2, 1), " E350");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(3, 1), " Truck");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(0, 2), " 1997 ");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(1, 2), " Ford ");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(2, 2), " E350 ");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(3, 2), " Truck ");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(0, 3), "1997");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(1, 3), "Ford");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(2, 3), "E350");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(3, 3), "Truck");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(0, 4), "1997");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(1, 4), "Ford");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(2, 4), "E350");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(3, 4), "Super, luxurious truck");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(0, 5), "1997");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(1, 5), "Ford");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(2, 5), "E350");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(3, 5), "Super, \"luxurious, fast\" truck");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(0, 6), "Los Angeles");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(1, 6), "34°03'N");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(2, 6), "118°15'W");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(3, 6), "US");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(0, 7), "New York City");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(1, 7), "40°42'46\"N");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(2, 7), "74°00'21\"W");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(3, 7), "US");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(0, 8), "Paris");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(1, 8), "48°51'24\"N");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(2, 8), "2°21'03\"E");
unittest::ExpectEqual(std::string, doc.GetCell<std::string>(3, 8), "France");
}
catch (const std::exception& ex)
{
std::cout << ex.what() << std::endl;
rv = 1;
}
unittest::DeleteFile(path);
return rv;
}