| 236 | } |
| 237 | |
| 238 | void FITSFilterTest::exportImport() { |
| 239 | // create Spreadsheet with data |
| 240 | Spreadsheet spreadsheet(QStringLiteral("Spreadsheet"), false); |
| 241 | spreadsheet.setColumnCount(3); |
| 242 | spreadsheet.setRowCount(10); |
| 243 | |
| 244 | const QVector<double> data{0.5, -0.2, GSL_NAN, 2.0, -1.0}; |
| 245 | |
| 246 | auto* col1{spreadsheet.column(0)}; |
| 247 | col1->setColumnMode(AbstractColumn::ColumnMode::Integer); |
| 248 | auto* col2{spreadsheet.column(1)}; |
| 249 | auto* col3{spreadsheet.column(2)}; |
| 250 | |
| 251 | SpreadsheetView view(&spreadsheet, false); |
| 252 | view.selectColumn(0); |
| 253 | view.fillWithRowNumbers(); |
| 254 | view.selectColumn(1); |
| 255 | |
| 256 | EquidistantValuesDialog dlg(&spreadsheet); |
| 257 | dlg.setColumns(QVector<Column*>{col2}); |
| 258 | dlg.setType(EquidistantValuesDialog::Type::FixedNumber); |
| 259 | dlg.setNumber(6); |
| 260 | dlg.setFromValue(1.); |
| 261 | dlg.setToValue(2.); |
| 262 | dlg.generate(); |
| 263 | |
| 264 | col3->replaceValues(0, data); |
| 265 | |
| 266 | // export to FITS |
| 267 | QTemporaryFile file; |
| 268 | if (!file.open()) // needed to generate file name |
| 269 | return; |
| 270 | file.close(); // only file name is used |
| 271 | |
| 272 | QString fileName = file.fileName(); |
| 273 | fileName.append(QStringLiteral(".fits")); |
| 274 | |
| 275 | FITSFilter filter; |
| 276 | // exports to primary header |
| 277 | filter.write(fileName, &spreadsheet); |
| 278 | |
| 279 | // import FITS file to another spreadsheet |
| 280 | Spreadsheet spreadsheet2(QStringLiteral("Import"), false); |
| 281 | filter.readDataFromFile(fileName, &spreadsheet2); |
| 282 | |
| 283 | QCOMPARE(spreadsheet2.columnCount(), 3); |
| 284 | QCOMPARE(spreadsheet2.rowCount(), 10); |
| 285 | |
| 286 | // check values |
| 287 | for (int i = 0; i < spreadsheet2.rowCount(); i++) |
| 288 | QCOMPARE(spreadsheet2.column(0)->valueAt(i), i + 1); |
| 289 | |
| 290 | for (int i = 0; i < 6; i++) |
| 291 | FuzzyCompare(spreadsheet2.column(1)->valueAt(i), 1. + i * 0.2, 1.e-7); |
| 292 | |
| 293 | for (int i = 0; i < data.size(); i++) |
| 294 | FuzzyCompare(spreadsheet2.column(2)->valueAt(i), data.at(i), 1.e-7); |
| 295 |
nothing calls this directly
no test coverage detected