| 16 | #include <QTemporaryFile> |
| 17 | |
| 18 | void MCAPFilterTest::testArrayImport() { |
| 19 | // This mcap file has one topic with name: integer_topic with 10 entries |
| 20 | // Its encoded in json schema, so each entry looks like this: {"value": n } with n from 0 to 9 |
| 21 | // mcap info basic.mcap |
| 22 | // library: python mcap 1.1.1 |
| 23 | // profile: |
| 24 | // messages: 10 |
| 25 | // duration: 9h0m0s |
| 26 | // start: 0.000000000 |
| 27 | // end: 32400.000000000 |
| 28 | // compression: {none,lz4 or zstd} |
| 29 | // : [1/1 chunks] [575.00 B/575.00 B (0.00%)] [0.00 B/sec] |
| 30 | // channels: |
| 31 | // (1) integer_topic 10 msgs (0.00 Hz) : sample [jsonschema] |
| 32 | // attachments: 0 |
| 33 | // metadata: 0 |
| 34 | |
| 35 | QVector<QString> compression_types = {QLatin1String("data/basic_NONE.mcap")}; |
| 36 | #ifdef HAVE_LZ4 |
| 37 | compression_types.append(QLatin1String("data/basic_LZ4.mcap")); |
| 38 | #endif |
| 39 | #ifdef HAVE_ZSTD |
| 40 | compression_types.append(QLatin1String("data/basic_ZSTD.mcap")); |
| 41 | #endif |
| 42 | |
| 43 | for (const QString& file : compression_types) { |
| 44 | Spreadsheet spreadsheet(QStringLiteral("test"), false); |
| 45 | McapFilter filter; |
| 46 | |
| 47 | const QString& fileName = QFINDTESTDATA(file); |
| 48 | |
| 49 | AbstractFileFilter::ImportMode mode = AbstractFileFilter::ImportMode::Replace; |
| 50 | filter.setCreateIndexEnabled(true); |
| 51 | filter.setDataRowType(QJsonValue::Object); |
| 52 | filter.setDateTimeFormat(QLatin1String("yyyy-MM-dd")); |
| 53 | filter.readDataFromFile(fileName, &spreadsheet, mode); |
| 54 | |
| 55 | QCOMPARE(spreadsheet.columnCount(), 5); |
| 56 | QCOMPARE(spreadsheet.rowCount(), 10); |
| 57 | QCOMPARE(spreadsheet.column(0)->columnMode(), AbstractColumn::ColumnMode::Integer); // Index |
| 58 | QCOMPARE(spreadsheet.column(1)->columnMode(), AbstractColumn::ColumnMode::DateTime); // LogTime |
| 59 | QCOMPARE(spreadsheet.column(2)->columnMode(), AbstractColumn::ColumnMode::DateTime); // PublishTime |
| 60 | QCOMPARE(spreadsheet.column(3)->columnMode(), AbstractColumn::ColumnMode::Integer); // Sequence |
| 61 | QCOMPARE(spreadsheet.column(4)->columnMode(), AbstractColumn::ColumnMode::Double); // Value |
| 62 | |
| 63 | QCOMPARE(spreadsheet.column(0)->plotDesignation(), AbstractColumn::PlotDesignation::X); |
| 64 | QCOMPARE(spreadsheet.column(1)->plotDesignation(), AbstractColumn::PlotDesignation::Y); |
| 65 | QCOMPARE(spreadsheet.column(2)->plotDesignation(), AbstractColumn::PlotDesignation::Y); |
| 66 | |
| 67 | QCOMPARE(spreadsheet.column(0)->name(), i18n("index")); |
| 68 | QCOMPARE(spreadsheet.column(1)->name(), QLatin1String("logTime")); |
| 69 | QCOMPARE(spreadsheet.column(2)->name(), QLatin1String("publishTime")); |
| 70 | QCOMPARE(spreadsheet.column(3)->name(), QLatin1String("sequence")); |
| 71 | QCOMPARE(spreadsheet.column(4)->name(), QLatin1String("value")); |
| 72 | |
| 73 | // Check Sequence |
| 74 | QCOMPARE(spreadsheet.column(3)->valueAt(0), 0); |
| 75 | QCOMPARE(spreadsheet.column(3)->valueAt(1), 1); |
nothing calls this directly
no test coverage detected