File indexing completed on 2024-10-13 06:30:12
0001 /* 0002 File : ReadStatFilterTest.cpp 0003 Project : LabPlot 0004 Description : Tests for the ReadStat I/O-filter. 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2021-2023 Stefan Gerlach <stefan.gerlach@uni.kn> 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #include "ReadStatFilterTest.h" 0011 #include "backend/datasources/filters/ReadStatFilter.h" 0012 #include "backend/lib/macros.h" 0013 #include "backend/spreadsheet/Spreadsheet.h" 0014 0015 #include <KLocalizedString> 0016 0017 void ReadStatFilterTest::initTestCase() { 0018 // needed in order to have the signals triggered by SignallingUndoCommand, see LabPlot.cpp 0019 qRegisterMetaType<const AbstractAspect*>("const AbstractAspect*"); 0020 qRegisterMetaType<const AbstractColumn*>("const AbstractColumn*"); 0021 } 0022 0023 void ReadStatFilterTest::testDTAImport() { 0024 Spreadsheet spreadsheet(QStringLiteral("test"), false); 0025 ReadStatFilter filter; 0026 0027 const QString& fileName = QFINDTESTDATA(QLatin1String("data/iris.dta")); 0028 const auto mode = AbstractFileFilter::ImportMode::Replace; 0029 filter.readDataFromFile(fileName, &spreadsheet, mode); 0030 0031 QCOMPARE(spreadsheet.columnCount(), 5); 0032 QCOMPARE(spreadsheet.rowCount(), 150); 0033 QCOMPARE(spreadsheet.column(0)->columnMode(), AbstractColumn::ColumnMode::Double); 0034 QCOMPARE(spreadsheet.column(1)->columnMode(), AbstractColumn::ColumnMode::Double); 0035 QCOMPARE(spreadsheet.column(2)->columnMode(), AbstractColumn::ColumnMode::Double); 0036 QCOMPARE(spreadsheet.column(3)->columnMode(), AbstractColumn::ColumnMode::Double); 0037 QCOMPARE(spreadsheet.column(4)->columnMode(), AbstractColumn::ColumnMode::Text); 0038 0039 QCOMPARE(spreadsheet.column(0)->plotDesignation(), AbstractColumn::PlotDesignation::X); 0040 QCOMPARE(spreadsheet.column(1)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0041 QCOMPARE(spreadsheet.column(2)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0042 QCOMPARE(spreadsheet.column(3)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0043 QCOMPARE(spreadsheet.column(4)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0044 0045 QCOMPARE(spreadsheet.column(0)->name(), QLatin1String("sepallength")); 0046 QCOMPARE(spreadsheet.column(1)->name(), QLatin1String("sepalwidth")); 0047 QCOMPARE(spreadsheet.column(2)->name(), QLatin1String("petallength")); 0048 QCOMPARE(spreadsheet.column(3)->name(), QLatin1String("petalwidth")); 0049 QCOMPARE(spreadsheet.column(4)->name(), QLatin1String("species")); 0050 0051 FuzzyCompare(spreadsheet.column(0)->valueAt(0), 5.1, 1.e-6); // 5.09999990463 0052 FuzzyCompare(spreadsheet.column(0)->valueAt(1), 4.9, 1.e-7); // 4.90000009537 0053 FuzzyCompare(spreadsheet.column(0)->valueAt(2), 4.7, 1.e-7); // 4.69999980927 0054 0055 QCOMPARE(spreadsheet.column(1)->valueAt(0), 3.5); 0056 FuzzyCompare(spreadsheet.column(2)->valueAt(0), 1.4, 1.e-7); // 1.39999997616 0057 FuzzyCompare(spreadsheet.column(3)->valueAt(0), 0.2, 1.e-7); // 0.20000000298 0058 QCOMPARE(spreadsheet.column(4)->textAt(0), QLatin1String("setosa")); 0059 0060 DEBUG(Q_FUNC_INFO << ", value = " << spreadsheet.column(0)->valueAt(149)) 0061 DEBUG(Q_FUNC_INFO << ", value = " << spreadsheet.column(2)->valueAt(149)) 0062 DEBUG(Q_FUNC_INFO << ", value = " << spreadsheet.column(3)->valueAt(149)) 0063 0064 FuzzyCompare(spreadsheet.column(0)->valueAt(149), 5.9, 1.e-7); // 5.90000009536743 0065 QCOMPARE(spreadsheet.column(1)->valueAt(149), 3.); 0066 FuzzyCompare(spreadsheet.column(2)->valueAt(149), 5.1, 1.e-7); // 5.09999990463257 0067 FuzzyCompare(spreadsheet.column(3)->valueAt(149), 1.8, 1.e-7); // 1.79999995231628 0068 QCOMPARE(spreadsheet.column(4)->textAt(149), QLatin1String("virginica")); 0069 } 0070 0071 void ReadStatFilterTest::testSASImport() { 0072 Spreadsheet spreadsheet(QStringLiteral("test"), false); 0073 ReadStatFilter filter; 0074 0075 const QString& fileName = QFINDTESTDATA(QLatin1String("data/iris.sas7bdat")); 0076 const auto mode = AbstractFileFilter::ImportMode::Replace; 0077 filter.readDataFromFile(fileName, &spreadsheet, mode); 0078 0079 QCOMPARE(spreadsheet.columnCount(), 5); 0080 QCOMPARE(spreadsheet.rowCount(), 150); 0081 QCOMPARE(spreadsheet.column(0)->columnMode(), AbstractColumn::ColumnMode::Double); 0082 QCOMPARE(spreadsheet.column(1)->columnMode(), AbstractColumn::ColumnMode::Double); 0083 QCOMPARE(spreadsheet.column(2)->columnMode(), AbstractColumn::ColumnMode::Double); 0084 QCOMPARE(spreadsheet.column(3)->columnMode(), AbstractColumn::ColumnMode::Double); 0085 QCOMPARE(spreadsheet.column(4)->columnMode(), AbstractColumn::ColumnMode::Text); 0086 0087 QCOMPARE(spreadsheet.column(0)->plotDesignation(), AbstractColumn::PlotDesignation::X); 0088 QCOMPARE(spreadsheet.column(1)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0089 QCOMPARE(spreadsheet.column(2)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0090 QCOMPARE(spreadsheet.column(3)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0091 QCOMPARE(spreadsheet.column(4)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0092 0093 QCOMPARE(spreadsheet.column(0)->name(), QLatin1String("Sepal_Length : BEST")); 0094 QCOMPARE(spreadsheet.column(1)->name(), QLatin1String("Sepal_Width : BEST")); 0095 QCOMPARE(spreadsheet.column(2)->name(), QLatin1String("Petal_Length : BEST")); 0096 QCOMPARE(spreadsheet.column(3)->name(), QLatin1String("Petal_Width : BEST")); 0097 QCOMPARE(spreadsheet.column(4)->name(), QLatin1String("Species : $")); 0098 0099 QCOMPARE(spreadsheet.column(0)->valueAt(0), 5.1); 0100 QCOMPARE(spreadsheet.column(0)->valueAt(1), 4.9); 0101 QCOMPARE(spreadsheet.column(0)->valueAt(2), 4.7); 0102 0103 QCOMPARE(spreadsheet.column(1)->valueAt(0), 3.5); 0104 QCOMPARE(spreadsheet.column(2)->valueAt(0), 1.4); 0105 QCOMPARE(spreadsheet.column(3)->valueAt(0), 0.2); 0106 QCOMPARE(spreadsheet.column(4)->textAt(0), QLatin1String("setosa")); 0107 0108 QCOMPARE(spreadsheet.column(0)->valueAt(149), 5.9); 0109 QCOMPARE(spreadsheet.column(1)->valueAt(149), 3.); 0110 QCOMPARE(spreadsheet.column(2)->valueAt(149), 5.1); 0111 QCOMPARE(spreadsheet.column(3)->valueAt(149), 1.8); 0112 QCOMPARE(spreadsheet.column(4)->textAt(149), QLatin1String("virgin")); 0113 } 0114 0115 void ReadStatFilterTest::testSAVImport() { 0116 Spreadsheet spreadsheet(QStringLiteral("test"), false); 0117 ReadStatFilter filter; 0118 0119 const QString& fileName = QFINDTESTDATA(QLatin1String("data/iris.sav")); 0120 const auto mode = AbstractFileFilter::ImportMode::Replace; 0121 filter.readDataFromFile(fileName, &spreadsheet, mode); 0122 0123 QCOMPARE(spreadsheet.columnCount(), 5); 0124 QCOMPARE(spreadsheet.rowCount(), 150); 0125 QCOMPARE(spreadsheet.column(0)->columnMode(), AbstractColumn::ColumnMode::Double); 0126 QCOMPARE(spreadsheet.column(1)->columnMode(), AbstractColumn::ColumnMode::Double); 0127 QCOMPARE(spreadsheet.column(2)->columnMode(), AbstractColumn::ColumnMode::Double); 0128 QCOMPARE(spreadsheet.column(3)->columnMode(), AbstractColumn::ColumnMode::Double); 0129 QCOMPARE(spreadsheet.column(4)->columnMode(), AbstractColumn::ColumnMode::Double); 0130 0131 QCOMPARE(spreadsheet.column(0)->plotDesignation(), AbstractColumn::PlotDesignation::X); 0132 QCOMPARE(spreadsheet.column(1)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0133 QCOMPARE(spreadsheet.column(2)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0134 QCOMPARE(spreadsheet.column(3)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0135 QCOMPARE(spreadsheet.column(4)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0136 0137 QCOMPARE(spreadsheet.column(0)->name(), QLatin1String("Sepal.Length")); 0138 QCOMPARE(spreadsheet.column(1)->name(), QLatin1String("Sepal.Width")); 0139 QCOMPARE(spreadsheet.column(2)->name(), QLatin1String("Petal.Length")); 0140 QCOMPARE(spreadsheet.column(3)->name(), QLatin1String("Petal.Width")); 0141 QCOMPARE(spreadsheet.column(4)->name(), QLatin1String("Species : labels0")); 0142 0143 QCOMPARE(spreadsheet.column(0)->valueAt(0), 5.1); 0144 QCOMPARE(spreadsheet.column(0)->valueAt(1), 4.9); 0145 QCOMPARE(spreadsheet.column(0)->valueAt(2), 4.7); 0146 0147 QCOMPARE(spreadsheet.column(1)->valueAt(0), 3.5); 0148 QCOMPARE(spreadsheet.column(2)->valueAt(0), 1.4); 0149 QCOMPARE(spreadsheet.column(3)->valueAt(0), 0.2); 0150 QCOMPARE(spreadsheet.column(4)->valueAt(0), 1); 0151 0152 QCOMPARE(spreadsheet.column(0)->valueAt(149), 5.9); 0153 QCOMPARE(spreadsheet.column(1)->valueAt(149), 3.); 0154 QCOMPARE(spreadsheet.column(2)->valueAt(149), 5.1); 0155 QCOMPARE(spreadsheet.column(3)->valueAt(149), 1.8); 0156 QCOMPARE(spreadsheet.column(4)->valueAt(149), 3); 0157 0158 // check value label 0159 QVERIFY(spreadsheet.column(4)->valueLabels() != nullptr); 0160 QCOMPARE(spreadsheet.column(4)->valueLabels()->count(), 3); 0161 for (const auto& vl : *spreadsheet.column(4)->valueLabels()) { 0162 if (vl.value == 1) 0163 QCOMPARE(vl.label, QLatin1String("setosa")); 0164 if (vl.value == 2) 0165 QCOMPARE(vl.label, QLatin1String("versicolor")); 0166 if (vl.value == 3) 0167 QCOMPARE(vl.label, QLatin1String("virginica")); 0168 } 0169 } 0170 0171 void ReadStatFilterTest::testPORImport() { 0172 Spreadsheet spreadsheet(QStringLiteral("test"), false); 0173 ReadStatFilter filter; 0174 0175 const QString& fileName = QFINDTESTDATA(QLatin1String("data/sample.por")); 0176 const auto mode = AbstractFileFilter::ImportMode::Replace; 0177 filter.readDataFromFile(fileName, &spreadsheet, mode); 0178 0179 QCOMPARE(spreadsheet.columnCount(), 7); 0180 QCOMPARE(spreadsheet.rowCount(), 5); 0181 QCOMPARE(spreadsheet.column(0)->columnMode(), AbstractColumn::ColumnMode::Text); 0182 QCOMPARE(spreadsheet.column(1)->columnMode(), AbstractColumn::ColumnMode::Double); 0183 QCOMPARE(spreadsheet.column(2)->columnMode(), AbstractColumn::ColumnMode::Double); 0184 QCOMPARE(spreadsheet.column(3)->columnMode(), AbstractColumn::ColumnMode::Double); 0185 QCOMPARE(spreadsheet.column(4)->columnMode(), AbstractColumn::ColumnMode::Double); 0186 QCOMPARE(spreadsheet.column(5)->columnMode(), AbstractColumn::ColumnMode::Double); 0187 QCOMPARE(spreadsheet.column(6)->columnMode(), AbstractColumn::ColumnMode::Double); 0188 0189 QCOMPARE(spreadsheet.column(0)->plotDesignation(), AbstractColumn::PlotDesignation::X); 0190 QCOMPARE(spreadsheet.column(1)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0191 QCOMPARE(spreadsheet.column(2)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0192 QCOMPARE(spreadsheet.column(3)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0193 QCOMPARE(spreadsheet.column(4)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0194 QCOMPARE(spreadsheet.column(5)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0195 QCOMPARE(spreadsheet.column(6)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0196 0197 QCOMPARE(spreadsheet.column(0)->name(), QLatin1String("MYCHAR")); 0198 QCOMPARE(spreadsheet.column(1)->name(), QLatin1String("MYNUM")); 0199 QCOMPARE(spreadsheet.column(2)->name(), QLatin1String("MYDATE")); 0200 QCOMPARE(spreadsheet.column(3)->name(), QLatin1String("DTIME")); 0201 QCOMPARE(spreadsheet.column(4)->name(), QLatin1String("MYLABL : labels0")); 0202 QCOMPARE(spreadsheet.column(5)->name(), QLatin1String("MYORD : labels1")); 0203 QCOMPARE(spreadsheet.column(6)->name(), QLatin1String("MYTIME")); 0204 0205 QCOMPARE(spreadsheet.column(0)->textAt(0), QLatin1String("a")); 0206 QCOMPARE(spreadsheet.column(0)->textAt(1), QLatin1String("b")); 0207 QCOMPARE(spreadsheet.column(0)->textAt(2), QLatin1String("c")); 0208 QCOMPARE(spreadsheet.column(0)->textAt(3), QLatin1String("d")); 0209 QCOMPARE(spreadsheet.column(0)->textAt(4), QLatin1String("e")); 0210 0211 QCOMPARE(spreadsheet.column(1)->valueAt(0), 1.1); 0212 QCOMPARE(spreadsheet.column(1)->valueAt(1), 1.2); 0213 QCOMPARE(spreadsheet.column(1)->valueAt(2), -1000.3); 0214 QCOMPARE(spreadsheet.column(1)->valueAt(3), -1.4); 0215 QCOMPARE(spreadsheet.column(1)->valueAt(4), 1000.3); 0216 0217 QCOMPARE(spreadsheet.column(2)->valueAt(0), 1.3744944e10); 0218 QCOMPARE(spreadsheet.column(2)->valueAt(1), 9.3901248e9); 0219 QCOMPARE(spreadsheet.column(2)->valueAt(2), 1.190376e10); 0220 QCOMPARE(spreadsheet.column(2)->valueAt(3), 6.8256e6); 0221 QCOMPARE(spreadsheet.column(2)->valueAt(4), NAN); 0222 0223 QCOMPARE(spreadsheet.column(3)->valueAt(0), 1.374498061e10); 0224 QCOMPARE(spreadsheet.column(3)->valueAt(1), 9.39016141e9); 0225 QCOMPARE(spreadsheet.column(3)->valueAt(2), 1.190376e10); 0226 QCOMPARE(spreadsheet.column(3)->valueAt(3), 6.8256e6); 0227 QCOMPARE(spreadsheet.column(3)->valueAt(4), NAN); 0228 0229 QCOMPARE(spreadsheet.column(4)->valueAt(0), 1); 0230 QCOMPARE(spreadsheet.column(4)->valueAt(1), 2); 0231 QCOMPARE(spreadsheet.column(4)->valueAt(2), 1); 0232 QCOMPARE(spreadsheet.column(4)->valueAt(3), 2); 0233 QCOMPARE(spreadsheet.column(4)->valueAt(4), 1); 0234 0235 QCOMPARE(spreadsheet.column(5)->valueAt(0), 1); 0236 QCOMPARE(spreadsheet.column(5)->valueAt(1), 2); 0237 QCOMPARE(spreadsheet.column(5)->valueAt(2), 3); 0238 QCOMPARE(spreadsheet.column(5)->valueAt(3), 1); 0239 QCOMPARE(spreadsheet.column(5)->valueAt(4), 1); 0240 0241 QCOMPARE(spreadsheet.column(6)->valueAt(0), 36610); 0242 QCOMPARE(spreadsheet.column(6)->valueAt(1), 83410); 0243 QCOMPARE(spreadsheet.column(6)->valueAt(2), 0); 0244 QCOMPARE(spreadsheet.column(6)->valueAt(3), 58210); 0245 QCOMPARE(spreadsheet.column(6)->valueAt(4), NAN); 0246 0247 // check value label 0248 QVERIFY(spreadsheet.column(4)->valueLabels() != nullptr); 0249 QCOMPARE(spreadsheet.column(4)->valueLabels()->count(), 2); 0250 for (const auto& vl : *spreadsheet.column(4)->valueLabels()) { 0251 if (vl.value == 1) 0252 QCOMPARE(vl.label, QLatin1String("Male")); 0253 if (vl.value == 2) 0254 QCOMPARE(vl.label, QLatin1String("Female")); 0255 } 0256 0257 QVERIFY(spreadsheet.column(5)->valueLabels() != nullptr); 0258 QCOMPARE(spreadsheet.column(5)->valueLabels()->count(), 3); 0259 for (const auto& vl : *spreadsheet.column(5)->valueLabels()) { 0260 if (vl.value == 1) 0261 QCOMPARE(vl.label, QLatin1String("low")); 0262 if (vl.value == 2) 0263 QCOMPARE(vl.label, QLatin1String("medium")); 0264 if (vl.value == 3) 0265 QCOMPARE(vl.label, QLatin1String("high")); 0266 } 0267 } 0268 0269 void ReadStatFilterTest::testXPTImport() { 0270 Spreadsheet spreadsheet(QStringLiteral("test"), false); 0271 ReadStatFilter filter; 0272 0273 const QString& fileName = QFINDTESTDATA(QLatin1String("data/sample.xpt")); 0274 const auto mode = AbstractFileFilter::ImportMode::Replace; 0275 filter.readDataFromFile(fileName, &spreadsheet, mode); 0276 0277 QCOMPARE(spreadsheet.columnCount(), 7); 0278 QCOMPARE(spreadsheet.rowCount(), 5); 0279 QCOMPARE(spreadsheet.column(0)->columnMode(), AbstractColumn::ColumnMode::Text); 0280 QCOMPARE(spreadsheet.column(1)->columnMode(), AbstractColumn::ColumnMode::Double); 0281 QCOMPARE(spreadsheet.column(2)->columnMode(), AbstractColumn::ColumnMode::Double); 0282 QCOMPARE(spreadsheet.column(3)->columnMode(), AbstractColumn::ColumnMode::Double); 0283 QCOMPARE(spreadsheet.column(4)->columnMode(), AbstractColumn::ColumnMode::Double); 0284 QCOMPARE(spreadsheet.column(5)->columnMode(), AbstractColumn::ColumnMode::Double); 0285 QCOMPARE(spreadsheet.column(6)->columnMode(), AbstractColumn::ColumnMode::Double); 0286 0287 QCOMPARE(spreadsheet.column(0)->plotDesignation(), AbstractColumn::PlotDesignation::X); 0288 QCOMPARE(spreadsheet.column(1)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0289 QCOMPARE(spreadsheet.column(2)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0290 QCOMPARE(spreadsheet.column(3)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0291 QCOMPARE(spreadsheet.column(4)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0292 QCOMPARE(spreadsheet.column(5)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0293 QCOMPARE(spreadsheet.column(6)->plotDesignation(), AbstractColumn::PlotDesignation::Y); 0294 0295 QCOMPARE(spreadsheet.column(0)->name(), QLatin1String("MYCHAR : $1")); 0296 QCOMPARE(spreadsheet.column(1)->name(), QLatin1String("MYNUM : BEST12")); 0297 QCOMPARE(spreadsheet.column(2)->name(), QLatin1String("MYDATE : YYMMDD10")); 0298 QCOMPARE(spreadsheet.column(3)->name(), QLatin1String("DTIME : DATETIME")); 0299 QCOMPARE(spreadsheet.column(4)->name(), QLatin1String("MYLABL : BEST12")); 0300 QCOMPARE(spreadsheet.column(5)->name(), QLatin1String("MYORD : BEST12")); 0301 QCOMPARE(spreadsheet.column(6)->name(), QLatin1String("MYTIME : TIME20.3")); 0302 0303 QCOMPARE(spreadsheet.column(0)->textAt(0), QLatin1String("a")); 0304 QCOMPARE(spreadsheet.column(0)->textAt(1), QLatin1String("b")); 0305 QCOMPARE(spreadsheet.column(0)->textAt(2), QLatin1String("c")); 0306 QCOMPARE(spreadsheet.column(0)->textAt(3), QLatin1String("d")); 0307 QCOMPARE(spreadsheet.column(0)->textAt(4), QLatin1String("e")); 0308 0309 QCOMPARE(spreadsheet.column(1)->valueAt(0), 1.1); 0310 QCOMPARE(spreadsheet.column(1)->valueAt(1), 1.2); 0311 QCOMPARE(spreadsheet.column(1)->valueAt(2), -1000.3); 0312 QCOMPARE(spreadsheet.column(1)->valueAt(3), -1.4); 0313 QCOMPARE(spreadsheet.column(1)->valueAt(4), 1000.3); 0314 0315 QCOMPARE(spreadsheet.column(2)->valueAt(0), 21310); 0316 QCOMPARE(spreadsheet.column(2)->valueAt(1), -29093); 0317 QCOMPARE(spreadsheet.column(2)->valueAt(2), 0); 0318 QCOMPARE(spreadsheet.column(2)->valueAt(3), -137696); 0319 QCOMPARE(spreadsheet.column(2)->valueAt(4), NAN); 0320 0321 QCOMPARE(spreadsheet.column(3)->valueAt(0), 1.84122061e9); 0322 QCOMPARE(spreadsheet.column(3)->valueAt(1), -2.51359859e9); 0323 QCOMPARE(spreadsheet.column(3)->valueAt(2), 0); 0324 QCOMPARE(spreadsheet.column(3)->valueAt(3), -1.18969344e10); 0325 QCOMPARE(spreadsheet.column(3)->valueAt(4), NAN); 0326 0327 QCOMPARE(spreadsheet.column(4)->valueAt(0), 1); 0328 QCOMPARE(spreadsheet.column(4)->valueAt(1), 2); 0329 QCOMPARE(spreadsheet.column(4)->valueAt(2), 1); 0330 QCOMPARE(spreadsheet.column(4)->valueAt(3), 2); 0331 QCOMPARE(spreadsheet.column(4)->valueAt(4), 1); 0332 0333 QCOMPARE(spreadsheet.column(5)->valueAt(0), 1); 0334 QCOMPARE(spreadsheet.column(5)->valueAt(1), 2); 0335 QCOMPARE(spreadsheet.column(5)->valueAt(2), 3); 0336 QCOMPARE(spreadsheet.column(5)->valueAt(3), 1); 0337 QCOMPARE(spreadsheet.column(5)->valueAt(4), 1); 0338 0339 QCOMPARE(spreadsheet.column(6)->valueAt(0), 36610); 0340 QCOMPARE(spreadsheet.column(6)->valueAt(1), 83410); 0341 QCOMPARE(spreadsheet.column(6)->valueAt(2), 0); 0342 QCOMPARE(spreadsheet.column(6)->valueAt(3), 58210); 0343 QCOMPARE(spreadsheet.column(6)->valueAt(4), NAN); 0344 0345 // no value label 0346 } 0347 0348 QTEST_MAIN(ReadStatFilterTest)