void TestImport::csvImport() { // Fetch data QFETCH(QString, csv); QFETCH(char, separator); QFETCH(char, quote); QFETCH(QString, encoding); QFETCH(int, numfields); QFETCH(QVector<QStringList>, result); // Create temporary CSV file QTemporaryFile file; QVERIFY(file.open()); { QTextStream out(&file); out.setCodec(encoding.toUtf8()); out << csv; } file.flush(); CSVParser csvparser(true, separator, quote); file.seek(0); QTextStream tstream(&file); tstream.setCodec(encoding.toUtf8()); csvparser.parse(tstream); // Check return values QCOMPARE(csvparser.csv(), result); QCOMPARE((int)csvparser.columns(), numfields); }
void TestImport::csvImport() { // Fetch data QFETCH(QString, csv); QFETCH(char, separator); QFETCH(char, quote); QFETCH(QString, encoding); QFETCH(int, numfields); QFETCH(QVector<QVector<QByteArray>>, result); // Create temporary CSV file QTemporaryFile file; QVERIFY(file.open()); { QTextStream out(&file); out.setCodec(encoding.toUtf8()); out << csv; } file.flush(); CSVParser csvparser(true, separator, quote); file.seek(0); QTextStream tstream(&file); tstream.setCodec(encoding.toUtf8()); QVector<QVector<QByteArray>> parsedCsv; int parsedCsvColumns = 0; csvparser.parse([&parsedCsv, &parsedCsvColumns](size_t /*rowNum*/, const CSVRow& data) -> bool { QVector<QByteArray> row; for(size_t i=0;i<data.num_fields;i++) row.push_back(QByteArray(data.fields[i].data, data.fields[i].data_length)); parsedCsv.push_back(row); if(row.size() > parsedCsvColumns) parsedCsvColumns = row.size(); return true; }, tstream); // Check return values QCOMPARE(parsedCsvColumns, numfields); QCOMPARE(parsedCsv.size(), result.size()); for(int i=0;i<parsedCsv.size();i++) { QCOMPARE(parsedCsv.at(i).size(), result.at(i).size()); for(int j=0;j<parsedCsv.at(i).size();j++) QCOMPARE(parsedCsv.at(i).at(j), result.at(i).at(j)); } QCOMPARE(parsedCsv, result); }