Adding some more tests
This commit is contained in:
1 parent
8bf5dcff30
commit
344beaf58c
5 files changed
+620
-4
No files matched your search
@@ -4,6 +4,7 @@
|
||||
#include <QAbstractItemModelTester>
|
||||
#include <QSignalSpy>
|
||||
#include <QTemporaryFile>
|
||||
#include <QStringList>
|
||||
#include <QtTest>
|
||||
#include <limits>
|
||||
|
||||
@@ -22,6 +23,76 @@ static std::unique_ptr<TreeNode> ParsedTree() {
|
||||
class ModelTest : public QObject {
|
||||
Q_OBJECT
|
||||
private Q_SLOTS:
|
||||
void additionalMetadata() {
|
||||
DbcDatabase database;
|
||||
FrameInfo frame;
|
||||
frame.name = "Extended";
|
||||
frame.canId = 0x18F00442U;
|
||||
frame.isExtended = true;
|
||||
frame.dlc = 8U;
|
||||
frame.comment = "Frame tooltip";
|
||||
SignalInfo signal;
|
||||
signal.name = "SignedMotorola";
|
||||
signal.startBit = 7U;
|
||||
signal.length = 16U;
|
||||
signal.isLittleEndian = false;
|
||||
signal.isSigned = true;
|
||||
signal.unit = "rpm";
|
||||
signal.comment = "Signal tooltip";
|
||||
frame.signals.push_back(signal);
|
||||
database.frames.push_back(frame);
|
||||
DbcTreeModel model;
|
||||
model.SetTree(DbcTreeBuilder().Build(database));
|
||||
const QModelIndex parent = model.index(0, 0);
|
||||
QCOMPARE(model.data(model.index(0, DbcTreeModel::ByteOrder, parent)).toString(), QString("Motorola"));
|
||||
QCOMPARE(model.data(model.index(0, DbcTreeModel::Signed, parent)).toString(), QString("Signed"));
|
||||
QCOMPARE(model.data(model.index(0, DbcTreeModel::CanId)).toString(), QString("0X18F00442"));
|
||||
const QStringList headers = {"Name", "CAN ID", "Payload (bytes)", "Start bit",
|
||||
"Length (bits)", "Byte order", "Signedness", "Unit", "Comment"};
|
||||
for (int column = 0; column < model.columnCount(); ++column) {
|
||||
const auto frameIndex = model.index(0, column);
|
||||
const auto signalIndex = model.index(0, column, parent);
|
||||
QCOMPARE(model.headerData(column, Qt::Horizontal).toString(), headers.at(column));
|
||||
QVERIFY(!model.headerData(column, Qt::Horizontal, Qt::ToolTipRole).isValid());
|
||||
QCOMPARE(model.data(frameIndex, Qt::ToolTipRole).toString(), QString("Frame tooltip"));
|
||||
QCOMPARE(model.data(signalIndex, Qt::ToolTipRole).toString(), QString("Signal tooltip"));
|
||||
QCOMPARE(model.data(frameIndex, DbcTreeModel::CommentRole).toString(), QString("Frame tooltip"));
|
||||
QCOMPARE(model.data(signalIndex, DbcTreeModel::CommentRole).toString(), QString("Signal tooltip"));
|
||||
QCOMPARE(model.data(frameIndex, DbcTreeModel::CanIdRole).toUInt(), frame.canId);
|
||||
QCOMPARE(model.data(frameIndex, DbcTreeModel::PayloadLengthRole).toInt(), 8);
|
||||
QCOMPARE(model.data(frameIndex, DbcTreeModel::ExtendedRole).toBool(), true);
|
||||
QCOMPARE(model.data(signalIndex, DbcTreeModel::StartBitRole).toUInt(), 7U);
|
||||
QCOMPARE(model.data(signalIndex, DbcTreeModel::BitLengthRole).toUInt(), 16U);
|
||||
QCOMPARE(model.data(signalIndex, DbcTreeModel::LittleEndianRole).toBool(), false);
|
||||
QCOMPARE(model.data(signalIndex, DbcTreeModel::SignedRole).toBool(), true);
|
||||
QCOMPARE(model.data(signalIndex, DbcTreeModel::UnitRole).toString(), QString("rpm"));
|
||||
const auto descriptions = model.data(signalIndex, DbcTreeModel::ValueDescriptionsRole);
|
||||
QVERIFY(descriptions.isValid());
|
||||
QVERIFY(descriptions.toList().isEmpty());
|
||||
QVERIFY(!model.data(frameIndex, Qt::UserRole + 1000).isValid());
|
||||
QVERIFY(!model.data(signalIndex, Qt::UserRole + 1000).isValid());
|
||||
QVERIFY(!model.setData(frameIndex, "Changed", Qt::EditRole));
|
||||
QVERIFY(!model.setData(signalIndex, "Changed", Qt::EditRole));
|
||||
}
|
||||
QCOMPARE(model.data(parent).toString(), QString("Extended"));
|
||||
QCOMPARE(model.data(model.index(0, 0, parent)).toString(), QString("SignedMotorola"));
|
||||
}
|
||||
void emptyRootAndRejectedReplacement() {
|
||||
DbcTreeModel model;
|
||||
QAbstractItemModelTester tester(&model, QAbstractItemModelTester::FailureReportingMode::QtTest);
|
||||
model.SetTree(ParsedTree());
|
||||
QPersistentModelIndex retained(model.index(0, 0));
|
||||
QSignalSpy resets(&model, &QAbstractItemModel::modelReset);
|
||||
QVERIFY_THROWS_EXCEPTION(std::invalid_argument, model.SetTree(std::make_unique<TreeNode>(SignalInfo())));
|
||||
QCOMPARE(resets.count(), 0);
|
||||
QVERIFY(retained.isValid());
|
||||
QCOMPARE(model.rowCount(), 2);
|
||||
model.SetTree(DbcTreeBuilder().Build(DbcDatabase()));
|
||||
QCOMPARE(resets.count(), 1);
|
||||
QVERIFY(!retained.isValid());
|
||||
QCOMPARE(model.rowCount(), 0);
|
||||
QVERIFY(!model.index(0, 0).isValid());
|
||||
}
|
||||
void navigation() {
|
||||
DbcTreeModel model;
|
||||
QAbstractItemModelTester tester(&model, QAbstractItemModelTester::FailureReportingMode::QtTest);
|
||||
|
||||
Reference in new issue
Block a user