annotate data/fileio/test/CSVFormatTest.h @ 1870:1b8c4ee06f6d csv-import-headers

Detect presence of header row in CSV format guesser; use headings to inform our guesses about column purposes; test this
author Chris Cannam
date Wed, 17 Jun 2020 18:01:00 +0100
parents 9570ef94eaa3
children 1d44fdc8196c
rev   line source
Chris@1345 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@1345 2
Chris@1345 3 /*
Chris@1345 4 Sonic Visualiser
Chris@1345 5 An audio file viewer and annotation editor.
Chris@1345 6 Centre for Digital Music, Queen Mary, University of London.
Chris@1345 7
Chris@1345 8 This program is free software; you can redistribute it and/or
Chris@1345 9 modify it under the terms of the GNU General Public License as
Chris@1345 10 published by the Free Software Foundation; either version 2 of the
Chris@1345 11 License, or (at your option) any later version. See the file
Chris@1345 12 COPYING included with this distribution for more information.
Chris@1345 13 */
Chris@1345 14
Chris@1524 15 #ifndef TEST_CSV_FORMAT_H
Chris@1524 16 #define TEST_CSV_FORMAT_H
Chris@1345 17
Chris@1524 18 // Tests for the code that guesses the most likely format for parsing a CSV file
Chris@1345 19
Chris@1524 20 #include "../CSVFormat.h"
Chris@1524 21
Chris@1524 22 #include "base/Debug.h"
Chris@1345 23
Chris@1345 24 #include <cmath>
Chris@1345 25
Chris@1345 26 #include <QObject>
Chris@1345 27 #include <QtTest>
Chris@1345 28 #include <QDir>
Chris@1345 29
Chris@1345 30 #include <iostream>
Chris@1345 31
Chris@1345 32 using namespace std;
Chris@1345 33
Chris@1524 34 class CSVFormatTest : public QObject
Chris@1345 35 {
Chris@1345 36 Q_OBJECT
Chris@1345 37
Chris@1346 38 private:
Chris@1524 39 QDir csvDir;
Chris@1346 40
Chris@1346 41 public:
Chris@1524 42 CSVFormatTest(QString base) {
Chris@1346 43 if (base == "") {
Chris@1346 44 base = "svcore/data/fileio/test";
Chris@1346 45 }
Chris@1524 46 csvDir = QDir(base + "/csv");
Chris@1346 47 }
Chris@1346 48
Chris@1524 49 private slots:
Chris@1524 50 void init() {
Chris@1524 51 if (!csvDir.exists()) {
Chris@1524 52 SVCERR << "ERROR: CSV test file directory \"" << csvDir.absolutePath() << "\" does not exist" << endl;
Chris@1524 53 QVERIFY2(csvDir.exists(), "CSV test file directory not found");
Chris@1359 54 }
Chris@1359 55 }
Chris@1359 56
Chris@1524 57 void separatorComma() {
Chris@1524 58 CSVFormat f;
Chris@1524 59 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-comma.csv")));
Chris@1524 60 QCOMPARE(f.getSeparator(), QChar(','));
Chris@1524 61 QCOMPARE(f.getColumnCount(), 3);
Chris@1524 62 }
Chris@1524 63
Chris@1524 64 void separatorTab() {
Chris@1524 65 CSVFormat f;
Chris@1524 66 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-tab.csv")));
Chris@1524 67 QCOMPARE(f.getSeparator(), QChar('\t'));
Chris@1524 68 QCOMPARE(f.getColumnCount(), 3);
Chris@1524 69 }
Chris@1524 70
Chris@1524 71 void separatorPipe() {
Chris@1524 72 CSVFormat f;
Chris@1524 73 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-pipe.csv")));
Chris@1524 74 QCOMPARE(f.getSeparator(), QChar('|'));
Chris@1524 75 // differs from the others
Chris@1524 76 QCOMPARE(f.getColumnCount(), 4);
Chris@1524 77 }
Chris@1524 78
Chris@1524 79 void separatorSpace() {
Chris@1524 80 CSVFormat f;
Chris@1524 81 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-space.csv")));
Chris@1524 82 QCOMPARE(f.getSeparator(), QChar(' '));
Chris@1524 83 // NB fields are separated by 1 or more spaces, not necessarily exactly 1
Chris@1524 84 QCOMPARE(f.getColumnCount(), 3);
Chris@1524 85 }
Chris@1524 86
Chris@1524 87 void separatorColon() {
Chris@1524 88 CSVFormat f;
Chris@1524 89 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-colon.csv")));
Chris@1524 90 QCOMPARE(f.getSeparator(), QChar(':'));
Chris@1524 91 QCOMPARE(f.getColumnCount(), 3);
Chris@1524 92 }
Chris@1524 93
Chris@1585 94 void plausibleSeparators() {
Chris@1585 95 CSVFormat f;
Chris@1585 96 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-many.csv")));
Chris@1585 97 std::set<QChar> p;
Chris@1585 98 p.insert(QChar('|'));
Chris@1585 99 p.insert(QChar(','));
Chris@1585 100 p.insert(QChar(':'));
Chris@1585 101 p.insert(QChar(' '));
Chris@1585 102 std::set<QChar> actual = f.getPlausibleSeparators();
Chris@1585 103 QCOMPARE(actual, p);
Chris@1585 104 }
Chris@1585 105
Chris@1524 106 void comment() {
Chris@1524 107 CSVFormat f;
Chris@1870 108 f.setHeaderStatus(CSVFormat::HeaderAbsent);
Chris@1524 109 QVERIFY(f.guessFormatFor(csvDir.filePath("comment.csv")));
Chris@1524 110 QCOMPARE(f.getSeparator(), QChar(','));
Chris@1524 111 QCOMPARE(f.getColumnCount(), 4);
Chris@1345 112 }
Chris@1345 113
Chris@1524 114 void qualities() {
Chris@1524 115 CSVFormat f;
Chris@1524 116 QVERIFY(f.guessFormatFor(csvDir.filePath("column-qualities.csv")));
Chris@1524 117 QCOMPARE(f.getSeparator(), QChar(','));
Chris@1524 118 QCOMPARE(f.getColumnCount(), 7);
Chris@1524 119 QList<CSVFormat::ColumnQualities> q = f.getColumnQualities();
Chris@1524 120 QList<CSVFormat::ColumnQualities> expected;
Chris@1524 121 expected << 0;
Chris@1524 122 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric |
Chris@1524 123 CSVFormat::ColumnIntegral |
Chris@1524 124 CSVFormat::ColumnIncreasing);
Chris@1524 125 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric |
Chris@1524 126 CSVFormat::ColumnIntegral |
Chris@1524 127 CSVFormat::ColumnIncreasing |
Chris@1524 128 CSVFormat::ColumnLarge);
Chris@1524 129 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric);
Chris@1524 130 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric |
Chris@1524 131 CSVFormat::ColumnIncreasing);
Chris@1524 132 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric |
Chris@1524 133 CSVFormat::ColumnSmall |
Chris@1524 134 CSVFormat::ColumnSigned);
Chris@1524 135 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric |
Chris@1524 136 CSVFormat::ColumnIntegral |
Chris@1524 137 CSVFormat::ColumnIncreasing |
Chris@1524 138 CSVFormat::ColumnNearEmpty);
Chris@1524 139 QCOMPARE(q, expected);
Chris@1359 140 }
Chris@1525 141
Chris@1525 142 void modelType1DSamples() {
Chris@1525 143 CSVFormat f;
Chris@1525 144 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-1d-samples.csv")));
Chris@1525 145 QCOMPARE(f.getColumnCount(), 1);
Chris@1870 146 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1870 147 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 148 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 149 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1870 150 QCOMPARE(f.getModelType(), CSVFormat::OneDimensionalModel);
Chris@1870 151 }
Chris@1870 152
Chris@1870 153 void modelType1DSamplesWithHeader() {
Chris@1870 154 CSVFormat f;
Chris@1870 155 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-1d-samples-header.csv")));
Chris@1870 156 QCOMPARE(f.getColumnCount(), 1);
Chris@1870 157 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1525 158 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 159 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 160 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1525 161 QCOMPARE(f.getModelType(), CSVFormat::OneDimensionalModel);
Chris@1525 162 }
Chris@1525 163
Chris@1525 164 void modelType1DSeconds() {
Chris@1525 165 CSVFormat f;
Chris@1525 166 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-1d-seconds.csv")));
Chris@1525 167 QCOMPARE(f.getColumnCount(), 2);
Chris@1870 168 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1870 169 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 170 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnLabel);
Chris@1870 171 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 172 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1870 173 QCOMPARE(f.getModelType(), CSVFormat::OneDimensionalModel);
Chris@1870 174 }
Chris@1870 175
Chris@1870 176 void modelType1DSecondsWithHeader() {
Chris@1870 177 CSVFormat f;
Chris@1870 178 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-1d-seconds-header.csv")));
Chris@1870 179 QCOMPARE(f.getColumnCount(), 2);
Chris@1870 180 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1525 181 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 182 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnLabel);
Chris@1525 183 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 184 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1525 185 QCOMPARE(f.getModelType(), CSVFormat::OneDimensionalModel);
Chris@1525 186 }
Chris@1525 187
Chris@1525 188 void modelType2DSamples() {
Chris@1525 189 CSVFormat f;
Chris@1525 190 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-samples.csv")));
Chris@1525 191 QCOMPARE(f.getColumnCount(), 2);
Chris@1870 192 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1870 193 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 194 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1870 195 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 196 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1870 197 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModel);
Chris@1870 198 }
Chris@1870 199
Chris@1870 200 void modelType2DSamplesWithHeader() {
Chris@1870 201 CSVFormat f;
Chris@1870 202 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-samples-header.csv")));
Chris@1870 203 QCOMPARE(f.getColumnCount(), 2);
Chris@1870 204 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1525 205 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 206 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1525 207 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 208 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1525 209 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModel);
Chris@1525 210 }
Chris@1525 211
Chris@1525 212 void modelType2DSeconds() {
Chris@1525 213 CSVFormat f;
Chris@1525 214 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-seconds.csv")));
Chris@1525 215 QCOMPARE(f.getColumnCount(), 2);
Chris@1870 216 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1870 217 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 218 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1870 219 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 220 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1870 221 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModel);
Chris@1870 222 }
Chris@1870 223
Chris@1870 224 void modelType2DSecondsWithHeader() {
Chris@1870 225 CSVFormat f;
Chris@1870 226 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-seconds-header.csv")));
Chris@1870 227 QCOMPARE(f.getColumnCount(), 2);
Chris@1870 228 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1525 229 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 230 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1525 231 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 232 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1525 233 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModel);
Chris@1525 234 }
Chris@1525 235
Chris@1525 236 void modelType2DImplicit() {
Chris@1525 237 CSVFormat f;
Chris@1525 238 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-implicit.csv")));
Chris@1525 239 QCOMPARE(f.getColumnCount(), 1);
Chris@1870 240 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1870 241 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnValue);
Chris@1870 242 QCOMPARE(f.getTimingType(), CSVFormat::ImplicitTiming);
Chris@1870 243 }
Chris@1870 244
Chris@1870 245 void modelType2DImplicitWithHeader() {
Chris@1870 246 CSVFormat f;
Chris@1870 247 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-implicit-header.csv")));
Chris@1870 248 QCOMPARE(f.getColumnCount(), 2);
Chris@1870 249 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1525 250 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnValue);
Chris@1525 251 QCOMPARE(f.getTimingType(), CSVFormat::ImplicitTiming);
Chris@1525 252 }
Chris@1525 253
Chris@1525 254 void modelType2DEndTimeSamples() {
Chris@1525 255 CSVFormat f;
Chris@1525 256 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-endtime-samples.csv")));
Chris@1525 257 QCOMPARE(f.getColumnCount(), 3);
Chris@1870 258 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1525 259 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 260 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnEndTime);
Chris@1525 261 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1525 262 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 263 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1525 264 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModelWithDuration);
Chris@1525 265 }
Chris@1525 266
Chris@1870 267 void modelType2DEndTimeSamplesWithHeader() {
Chris@1870 268 CSVFormat f;
Chris@1870 269 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-endtime-samples-header.csv")));
Chris@1870 270 QCOMPARE(f.getColumnCount(), 3);
Chris@1870 271 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1870 272 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 273 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1870 274 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnEndTime);
Chris@1870 275 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 276 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1870 277 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModelWithDuration);
Chris@1870 278 }
Chris@1870 279
Chris@1525 280 void modelType2DEndTimeSeconds() {
Chris@1525 281 CSVFormat f;
Chris@1525 282 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-endtime-seconds.csv")));
Chris@1525 283 QCOMPARE(f.getColumnCount(), 3);
Chris@1870 284 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1525 285 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 286 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnEndTime);
Chris@1525 287 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1525 288 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 289 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1525 290 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModelWithDuration);
Chris@1525 291 }
Chris@1525 292
Chris@1870 293 void modelType2DEndTimeSecondsWithHeader() {
Chris@1870 294 CSVFormat f;
Chris@1870 295 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-endtime-seconds-header.csv")));
Chris@1870 296 QCOMPARE(f.getColumnCount(), 3);
Chris@1870 297 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1870 298 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 299 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1870 300 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnEndTime);
Chris@1870 301 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 302 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1870 303 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModelWithDuration);
Chris@1870 304 }
Chris@1870 305
Chris@1525 306 void modelType2DDurationSamples() {
Chris@1525 307 CSVFormat f;
Chris@1525 308 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-duration-samples.csv")));
Chris@1525 309 QCOMPARE(f.getColumnCount(), 3);
Chris@1870 310 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1525 311 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 312 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnDuration);
Chris@1525 313 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1525 314 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 315 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1525 316 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModelWithDuration);
Chris@1525 317 }
Chris@1870 318
Chris@1870 319 void modelType2DDurationSamplesWithHeader() {
Chris@1870 320 CSVFormat f;
Chris@1870 321 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-duration-samples-header.csv")));
Chris@1870 322 QCOMPARE(f.getColumnCount(), 3);
Chris@1870 323 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1870 324 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 325 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1870 326 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnDuration);
Chris@1870 327 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 328 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1870 329 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModelWithDuration);
Chris@1870 330 }
Chris@1525 331
Chris@1525 332 void modelType2DDurationSeconds() {
Chris@1525 333 CSVFormat f;
Chris@1525 334 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-duration-seconds.csv")));
Chris@1525 335 QCOMPARE(f.getColumnCount(), 3);
Chris@1870 336 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1525 337 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 338 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnDuration);
Chris@1525 339 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1525 340 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 341 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1525 342 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModelWithDuration);
Chris@1525 343 }
Chris@1525 344
Chris@1870 345 void modelType2DDurationSecondsWithHeader() {
Chris@1870 346 CSVFormat f;
Chris@1870 347 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-2d-duration-seconds-header.csv")));
Chris@1870 348 QCOMPARE(f.getColumnCount(), 3);
Chris@1870 349 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1870 350 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 351 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1870 352 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnDuration);
Chris@1870 353 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 354 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1870 355 QCOMPARE(f.getModelType(), CSVFormat::TwoDimensionalModelWithDuration);
Chris@1870 356 }
Chris@1870 357
Chris@1525 358 void modelType3DSamples() {
Chris@1525 359 CSVFormat f;
Chris@1525 360 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-3d-samples.csv")));
Chris@1525 361 QCOMPARE(f.getColumnCount(), 7);
Chris@1870 362 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1870 363 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 364 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1870 365 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1870 366 QCOMPARE(f.getColumnPurpose(3), CSVFormat::ColumnValue);
Chris@1870 367 QCOMPARE(f.getColumnPurpose(4), CSVFormat::ColumnValue);
Chris@1870 368 QCOMPARE(f.getColumnPurpose(5), CSVFormat::ColumnValue);
Chris@1870 369 QCOMPARE(f.getColumnPurpose(6), CSVFormat::ColumnValue);
Chris@1870 370 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 371 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1870 372 QCOMPARE(f.getModelType(), CSVFormat::ThreeDimensionalModel);
Chris@1870 373 }
Chris@1870 374
Chris@1870 375 void modelType3DSamplesWithHeader() {
Chris@1870 376 CSVFormat f;
Chris@1870 377 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-3d-samples-header.csv")));
Chris@1870 378 QCOMPARE(f.getColumnCount(), 7);
Chris@1870 379 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1525 380 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 381 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1525 382 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1525 383 QCOMPARE(f.getColumnPurpose(3), CSVFormat::ColumnValue);
Chris@1525 384 QCOMPARE(f.getColumnPurpose(4), CSVFormat::ColumnValue);
Chris@1525 385 QCOMPARE(f.getColumnPurpose(5), CSVFormat::ColumnValue);
Chris@1525 386 QCOMPARE(f.getColumnPurpose(6), CSVFormat::ColumnValue);
Chris@1525 387 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 388 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeAudioFrames);
Chris@1525 389 QCOMPARE(f.getModelType(), CSVFormat::ThreeDimensionalModel);
Chris@1525 390 }
Chris@1525 391
Chris@1525 392 void modelType3DSeconds() {
Chris@1525 393 CSVFormat f;
Chris@1525 394 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-3d-seconds.csv")));
Chris@1525 395 QCOMPARE(f.getColumnCount(), 7);
Chris@1870 396 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1870 397 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1870 398 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1870 399 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1870 400 QCOMPARE(f.getColumnPurpose(3), CSVFormat::ColumnValue);
Chris@1870 401 QCOMPARE(f.getColumnPurpose(4), CSVFormat::ColumnValue);
Chris@1870 402 QCOMPARE(f.getColumnPurpose(5), CSVFormat::ColumnValue);
Chris@1870 403 QCOMPARE(f.getColumnPurpose(6), CSVFormat::ColumnValue);
Chris@1870 404 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1870 405 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1870 406 QCOMPARE(f.getModelType(), CSVFormat::ThreeDimensionalModel);
Chris@1870 407 }
Chris@1870 408
Chris@1870 409 void modelType3DSecondsWithHeader() {
Chris@1870 410 CSVFormat f;
Chris@1870 411 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-3d-seconds-header.csv")));
Chris@1870 412 QCOMPARE(f.getColumnCount(), 7);
Chris@1870 413 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1525 414 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnStartTime);
Chris@1525 415 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1525 416 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1525 417 QCOMPARE(f.getColumnPurpose(3), CSVFormat::ColumnValue);
Chris@1525 418 QCOMPARE(f.getColumnPurpose(4), CSVFormat::ColumnValue);
Chris@1525 419 QCOMPARE(f.getColumnPurpose(5), CSVFormat::ColumnValue);
Chris@1525 420 QCOMPARE(f.getColumnPurpose(6), CSVFormat::ColumnValue);
Chris@1525 421 QCOMPARE(f.getTimingType(), CSVFormat::ExplicitTiming);
Chris@1525 422 QCOMPARE(f.getTimeUnits(), CSVFormat::TimeSeconds);
Chris@1525 423 QCOMPARE(f.getModelType(), CSVFormat::ThreeDimensionalModel);
Chris@1525 424 }
Chris@1525 425
Chris@1525 426 void modelType3DImplicit() {
Chris@1525 427 CSVFormat f;
Chris@1525 428 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-3d-implicit.csv")));
Chris@1525 429 QCOMPARE(f.getColumnCount(), 6);
Chris@1870 430 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderAbsent);
Chris@1870 431 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnValue);
Chris@1870 432 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1870 433 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1870 434 QCOMPARE(f.getColumnPurpose(3), CSVFormat::ColumnValue);
Chris@1870 435 QCOMPARE(f.getColumnPurpose(4), CSVFormat::ColumnValue);
Chris@1870 436 QCOMPARE(f.getColumnPurpose(5), CSVFormat::ColumnValue);
Chris@1870 437 QCOMPARE(f.getTimingType(), CSVFormat::ImplicitTiming);
Chris@1870 438 QCOMPARE(f.getModelType(), CSVFormat::ThreeDimensionalModel);
Chris@1870 439 }
Chris@1870 440
Chris@1870 441 void modelType3DImplicitWithHeader() {
Chris@1870 442 CSVFormat f;
Chris@1870 443 QVERIFY(f.guessFormatFor(csvDir.filePath("model-type-3d-implicit-header.csv")));
Chris@1870 444 QCOMPARE(f.getColumnCount(), 6);
Chris@1870 445 QCOMPARE(f.getHeaderStatus(), CSVFormat::HeaderPresent);
Chris@1525 446 QCOMPARE(f.getColumnPurpose(0), CSVFormat::ColumnValue);
Chris@1525 447 QCOMPARE(f.getColumnPurpose(1), CSVFormat::ColumnValue);
Chris@1525 448 QCOMPARE(f.getColumnPurpose(2), CSVFormat::ColumnValue);
Chris@1525 449 QCOMPARE(f.getColumnPurpose(3), CSVFormat::ColumnValue);
Chris@1525 450 QCOMPARE(f.getColumnPurpose(4), CSVFormat::ColumnValue);
Chris@1525 451 QCOMPARE(f.getColumnPurpose(5), CSVFormat::ColumnValue);
Chris@1525 452 QCOMPARE(f.getTimingType(), CSVFormat::ImplicitTiming);
Chris@1525 453 QCOMPARE(f.getModelType(), CSVFormat::ThreeDimensionalModel);
Chris@1525 454 }
Chris@1525 455
Chris@1345 456 };
Chris@1345 457
Chris@1345 458 #endif