Mercurial > hg > svcore
comparison data/fileio/test/CSVFormatTest.h @ 1524:64ef24ebb19c
Some CSV format tests and minor fixes
author | Chris Cannam |
---|---|
date | Fri, 14 Sep 2018 09:25:17 +0100 |
parents | data/fileio/test/EncodingTest.h@87ae75da6527 |
children | a92e94215863 |
comparison
equal
deleted
inserted
replaced
1523:c1b2eab6ac51 | 1524:64ef24ebb19c |
---|---|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ | |
2 | |
3 /* | |
4 Sonic Visualiser | |
5 An audio file viewer and annotation editor. | |
6 Centre for Digital Music, Queen Mary, University of London. | |
7 | |
8 This program is free software; you can redistribute it and/or | |
9 modify it under the terms of the GNU General Public License as | |
10 published by the Free Software Foundation; either version 2 of the | |
11 License, or (at your option) any later version. See the file | |
12 COPYING included with this distribution for more information. | |
13 */ | |
14 | |
15 #ifndef TEST_CSV_FORMAT_H | |
16 #define TEST_CSV_FORMAT_H | |
17 | |
18 // Tests for the code that guesses the most likely format for parsing a CSV file | |
19 | |
20 #include "../CSVFormat.h" | |
21 | |
22 #include "base/Debug.h" | |
23 | |
24 #include <cmath> | |
25 | |
26 #include <QObject> | |
27 #include <QtTest> | |
28 #include <QDir> | |
29 | |
30 #include <iostream> | |
31 | |
32 using namespace std; | |
33 | |
34 class CSVFormatTest : public QObject | |
35 { | |
36 Q_OBJECT | |
37 | |
38 private: | |
39 QDir csvDir; | |
40 | |
41 public: | |
42 CSVFormatTest(QString base) { | |
43 if (base == "") { | |
44 base = "svcore/data/fileio/test"; | |
45 } | |
46 csvDir = QDir(base + "/csv"); | |
47 } | |
48 | |
49 private slots: | |
50 void init() { | |
51 if (!csvDir.exists()) { | |
52 SVCERR << "ERROR: CSV test file directory \"" << csvDir.absolutePath() << "\" does not exist" << endl; | |
53 QVERIFY2(csvDir.exists(), "CSV test file directory not found"); | |
54 } | |
55 } | |
56 | |
57 void separatorComma() { | |
58 CSVFormat f; | |
59 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-comma.csv"))); | |
60 QCOMPARE(f.getSeparator(), QChar(',')); | |
61 QCOMPARE(f.getColumnCount(), 3); | |
62 } | |
63 | |
64 void separatorTab() { | |
65 CSVFormat f; | |
66 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-tab.csv"))); | |
67 QCOMPARE(f.getSeparator(), QChar('\t')); | |
68 QCOMPARE(f.getColumnCount(), 3); | |
69 } | |
70 | |
71 void separatorPipe() { | |
72 CSVFormat f; | |
73 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-pipe.csv"))); | |
74 QCOMPARE(f.getSeparator(), QChar('|')); | |
75 // differs from the others | |
76 QCOMPARE(f.getColumnCount(), 4); | |
77 } | |
78 | |
79 void separatorSpace() { | |
80 CSVFormat f; | |
81 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-space.csv"))); | |
82 QCOMPARE(f.getSeparator(), QChar(' ')); | |
83 // NB fields are separated by 1 or more spaces, not necessarily exactly 1 | |
84 QCOMPARE(f.getColumnCount(), 3); | |
85 } | |
86 | |
87 void separatorColon() { | |
88 CSVFormat f; | |
89 QVERIFY(f.guessFormatFor(csvDir.filePath("separator-colon.csv"))); | |
90 QCOMPARE(f.getSeparator(), QChar(':')); | |
91 QCOMPARE(f.getColumnCount(), 3); | |
92 } | |
93 | |
94 void comment() { | |
95 CSVFormat f; | |
96 QVERIFY(f.guessFormatFor(csvDir.filePath("comment.csv"))); | |
97 QCOMPARE(f.getSeparator(), QChar(',')); | |
98 QCOMPARE(f.getColumnCount(), 4); | |
99 } | |
100 | |
101 void qualities() { | |
102 CSVFormat f; | |
103 QVERIFY(f.guessFormatFor(csvDir.filePath("column-qualities.csv"))); | |
104 QCOMPARE(f.getSeparator(), QChar(',')); | |
105 QCOMPARE(f.getColumnCount(), 7); | |
106 QList<CSVFormat::ColumnQualities> q = f.getColumnQualities(); | |
107 QList<CSVFormat::ColumnQualities> expected; | |
108 expected << 0; | |
109 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric | | |
110 CSVFormat::ColumnIntegral | | |
111 CSVFormat::ColumnIncreasing); | |
112 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric | | |
113 CSVFormat::ColumnIntegral | | |
114 CSVFormat::ColumnIncreasing | | |
115 CSVFormat::ColumnLarge); | |
116 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric); | |
117 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric | | |
118 CSVFormat::ColumnIncreasing); | |
119 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric | | |
120 CSVFormat::ColumnSmall | | |
121 CSVFormat::ColumnSigned); | |
122 expected << CSVFormat::ColumnQualities(CSVFormat::ColumnNumeric | | |
123 CSVFormat::ColumnIntegral | | |
124 CSVFormat::ColumnIncreasing | | |
125 CSVFormat::ColumnNearEmpty); | |
126 QCOMPARE(q, expected); | |
127 } | |
128 }; | |
129 | |
130 #endif |