* check sorting datetimes with invalid entries descending as leading column */
| 1124 | * check sorting datetimes with invalid entries descending as leading column |
| 1125 | */ |
| 1126 | void SpreadsheetTest::testSortDateTime2() { |
| 1127 | const QVector<QDateTime> xData{ |
| 1128 | QDateTime(QDate(2020, 02, 29), QTime(12, 12, 12)), |
| 1129 | QDateTime(QDate(2020, 02, 28), QTime(12, 12, 12)), |
| 1130 | QDateTime(QDate(2019, 02, 28), QTime(12, 12, 12)), |
| 1131 | QDateTime(QDate(2019, 02, 29), QTime(12, 12, 12)), // invalid |
| 1132 | QDateTime(QDate(2020, 02, 29), QTime(12, 12, 13)), |
| 1133 | QDateTime(QDate(2020, 02, 29), QTime(11, 12, 12)), |
| 1134 | }; |
| 1135 | const QVector<int> yData = {1, 2, 3, 4, 5, 6, 7}; |
| 1136 | |
| 1137 | Spreadsheet sheet(QStringLiteral("test"), false); |
| 1138 | sheet.setColumnCount(2); |
| 1139 | sheet.setRowCount(8); |
| 1140 | auto* col0{sheet.column(0)}; |
| 1141 | auto* col1{sheet.column(1)}; |
| 1142 | col0->setColumnMode(AbstractColumn::ColumnMode::DateTime); |
| 1143 | col0->replaceDateTimes(0, xData); |
| 1144 | col1->setColumnMode(AbstractColumn::ColumnMode::Integer); |
| 1145 | col1->replaceInteger(0, yData); |
| 1146 | |
| 1147 | // sort |
| 1148 | sheet.sortColumns(col0, {col0, col1}, false); |
| 1149 | |
| 1150 | // values |
| 1151 | QCOMPARE(col0->dateTimeAt(4), QDateTime(QDate(2019, 02, 28), QTime(12, 12, 12))); |
| 1152 | QCOMPARE(col0->dateTimeAt(3), QDateTime(QDate(2020, 02, 28), QTime(12, 12, 12))); |
| 1153 | QCOMPARE(col0->dateTimeAt(2), QDateTime(QDate(2020, 02, 29), QTime(11, 12, 12))); |
| 1154 | QCOMPARE(col0->dateTimeAt(1), QDateTime(QDate(2020, 02, 29), QTime(12, 12, 12))); |
| 1155 | QCOMPARE(col0->dateTimeAt(0), QDateTime(QDate(2020, 02, 29), QTime(12, 12, 13))); |
| 1156 | QCOMPARE(col1->integerAt(4), 3); |
| 1157 | QCOMPARE(col1->integerAt(3), 2); |
| 1158 | QCOMPARE(col1->integerAt(2), 6); |
| 1159 | QCOMPARE(col1->integerAt(1), 1); |
| 1160 | QCOMPARE(col1->integerAt(0), 5); |
| 1161 | QCOMPARE(col1->integerAt(5), 4); |
| 1162 | QCOMPARE(col1->integerAt(6), 7); |
| 1163 | } |
| 1164 | |
| 1165 | // performance |
| 1166 |
nothing calls this directly
no test coverage detected