MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / validateDataset

Function validateDataset

app/src/API/Handlers/ProjectHandler.cpp:5706–5747  ·  view source on GitHub ↗

* @brief Validates a single dataset's references and per-field invariants. */

Source from the content-addressed store, hash-verified

5704 * @brief Validates a single dataset's references and per-field invariants.
5705 */
5706static 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.

Callers 1

validateGroupsFunction · 0.85

Calls 3

addIssueFunction · 0.85
isEmptyMethod · 0.80
containsMethod · 0.45

Tested by

no test coverage detected