* @brief Validates a single dataset's references and per-field invariants. */
| 5704 | * @brief Validates a single dataset's references and per-field invariants. |
| 5705 | */ |
| 5706 | static void validateDataset(const DataModel::Dataset& d, |
| 5707 | const DataModel::Group& g, |
| 5708 | const QSet<int>& sourceIds, |
| 5709 | QSet<int>& datasetIndexes, |
| 5710 | QJsonArray& issues, |
| 5711 | bool& ok) |
| 5712 | { |
| 5713 | const QString dloc = QStringLiteral("group[%1].dataset[%2]") |
| 5714 | .arg(QString::number(g.groupId), QString::number(d.datasetId)); |
| 5715 | |
| 5716 | if (!sourceIds.contains(d.sourceId)) { |
| 5717 | ok = false; |
| 5718 | addIssue(issues, |
| 5719 | QStringLiteral("error"), |
| 5720 | dloc, |
| 5721 | QStringLiteral("Dataset references missing source id %1").arg(d.sourceId)); |
| 5722 | } |
| 5723 | |
| 5724 | if (d.title.trimmed().isEmpty()) |
| 5725 | addIssue(issues, QStringLiteral("warning"), dloc, QStringLiteral("Dataset has no title")); |
| 5726 | |
| 5727 | if (!d.virtual_ && d.index <= 0) |
| 5728 | addIssue(issues, |
| 5729 | QStringLiteral("warning"), |
| 5730 | dloc, |
| 5731 | QStringLiteral("Non-virtual dataset has index 0; nothing maps to it")); |
| 5732 | |
| 5733 | if (!d.virtual_ && datasetIndexes.contains(d.index)) { |
| 5734 | ok = false; |
| 5735 | addIssue(issues, |
| 5736 | QStringLiteral("error"), |
| 5737 | dloc, |
| 5738 | QStringLiteral("Dataset index %1 is already used in this group").arg(d.index)); |
| 5739 | } |
| 5740 | datasetIndexes.insert(d.index); |
| 5741 | |
| 5742 | if (d.fft && d.fftSamples <= 0) { |
| 5743 | ok = false; |
| 5744 | addIssue( |
| 5745 | issues, QStringLiteral("error"), dloc, QStringLiteral("FFT enabled but fftSamples is 0")); |
| 5746 | } |
| 5747 | } |
| 5748 | |
| 5749 | /** |
| 5750 | * @brief Validates each group and its datasets against the source-id set. |
no test coverage detected