Closes #14
This commit is contained in:
1 parent
51fcdb88ac
commit
0708316a37
155 files changed
+5190
-2691
No files matched your search
+24
-23
@@ -21,13 +21,10 @@ namespace {
|
||||
}
|
||||
|
||||
DecodeDatabase SingleSignal(const DecodeSignal &signal) {
|
||||
DecodeDatabase database;
|
||||
DecodeFrame frame;
|
||||
frame.canId = 17U;
|
||||
frame.signals.push_back(signal);
|
||||
database.frames.push_back(frame);
|
||||
database.frameIndexByKey.emplace(FrameKey(17U, false), 0U);
|
||||
return database;
|
||||
return DecodeDatabase({frame});
|
||||
}
|
||||
|
||||
// Independent reference: collect the visited bits first, then weight them.
|
||||
@@ -115,14 +112,12 @@ void CoverageTest::frameLookup() {
|
||||
raw.canId = 18U;
|
||||
QVERIFY(!decoder.Decode(database, raw).valid);
|
||||
raw.canId = 17U;
|
||||
database.frameIndexByKey.at(FrameKey(17U, false)) = database.frames.size();
|
||||
QVERIFY(decoder.FindFrame(database, 17U, false) == nullptr);
|
||||
QVERIFY(!decoder.Decode(database, raw).valid);
|
||||
database.frameIndexByKey.at(FrameKey(17U, false)) = 0U;
|
||||
database.frames[0].signals.clear();
|
||||
DecodeFrame noSignals;
|
||||
noSignals.canId = 17U;
|
||||
database = DecodeDatabase({noSignals});
|
||||
const DecodedFrameValue matched = decoder.Decode(database, raw);
|
||||
QVERIFY(matched.valid);
|
||||
QCOMPARE(matched.definition, &database.frames[0]);
|
||||
QCOMPARE(matched.definition.get(), &database.GetFrames()[0]);
|
||||
QVERIFY(matched.signals.empty());
|
||||
}
|
||||
|
||||
@@ -255,21 +250,28 @@ void CoverageTest::malformedRuntimeMultiplexing() {
|
||||
DecodeSignal selector;
|
||||
selector.length = 1U;
|
||||
selector.multiplexing.role = MultiplexRole::Selector;
|
||||
DecodeDatabase database = SingleSignal(selector);
|
||||
selector.name = "Selector";
|
||||
std::vector<DecodeFrame> definitions = SingleSignal(selector).GetFrames();
|
||||
DecodeSignal branch;
|
||||
branch.name = "Branch";
|
||||
branch.startBit = 8U;
|
||||
branch.length = 8U;
|
||||
branch.multiplexing.role = MultiplexRole::Branch;
|
||||
branch.multiplexing.value = 1U;
|
||||
database.frames[0].signals.push_back(branch);
|
||||
definitions[0].signals.push_back(branch);
|
||||
DecodeSignal ordinary;
|
||||
ordinary.name = "Ordinary";
|
||||
ordinary.startBit = 16U;
|
||||
ordinary.length = 8U;
|
||||
database.frames[0].signals.push_back(ordinary);
|
||||
if (kind == 0) database.frames[0].signals.push_back(selector);
|
||||
if (kind == 1) database.frames[0].signals[0].valueType = ValueType::Signed;
|
||||
if (kind == 2) database.frames[0].signals[0].length = 65U;
|
||||
if (kind == 3) database.frames[0].signals[1].multiplexing.value = 2U;
|
||||
definitions[0].signals.push_back(ordinary);
|
||||
if (kind == 0) {
|
||||
selector.name = "SecondSelector";
|
||||
definitions[0].signals.push_back(selector);
|
||||
}
|
||||
if (kind == 1) definitions[0].signals[0].valueType = ValueType::Signed;
|
||||
if (kind == 2) definitions[0].signals[0].length = 65U;
|
||||
if (kind == 3) definitions[0].signals[1].multiplexing.value = 2U;
|
||||
const DecodeDatabase database(std::move(definitions));
|
||||
RawCanFrame raw;
|
||||
raw.canId = 17U;
|
||||
raw.data = {1U, 42U, 99U};
|
||||
@@ -491,8 +493,8 @@ void CoverageTest::missingFile() {
|
||||
|
||||
void CoverageTest::builders() {
|
||||
const DecodeDatabase emptyRuntime = DbcDecodeBuilder().Build(DbcDatabase());
|
||||
QVERIFY(emptyRuntime.frames.empty());
|
||||
QVERIFY(emptyRuntime.frameIndexByKey.empty());
|
||||
QVERIFY(emptyRuntime.GetFrames().empty());
|
||||
QVERIFY(!emptyRuntime.FindFrame(FrameKey(0U, false)));
|
||||
const std::unique_ptr<TreeNode> emptyTree = DbcTreeBuilder().Build(DbcDatabase());
|
||||
QCOMPARE(emptyTree->GetType(), NodeType::Root);
|
||||
QCOMPARE(emptyTree->GetName(), std::string("dbc"));
|
||||
@@ -517,18 +519,17 @@ void CoverageTest::builders() {
|
||||
source.frames[0].signals[1].valueDescriptions.clear();
|
||||
source.frames.clear();
|
||||
}
|
||||
QCOMPARE(runtime.frames.size(), expected.frames.size());
|
||||
QCOMPARE(runtime.GetFrames().size(), expected.frames.size());
|
||||
QCOMPARE(tree->GetChildCount(), expected.frames.size());
|
||||
QCOMPARE(runtime.frameIndexByKey.size(), expected.frames.size());
|
||||
for (std::size_t i = 0; i < expected.frames.size(); ++i) {
|
||||
const FrameInfo &frame = expected.frames[i];
|
||||
const DecodeFrame &decodedFrame = runtime.frames[i];
|
||||
const DecodeFrame &decodedFrame = runtime.GetFrames()[i];
|
||||
const TreeNode *node = tree->GetChild(i);
|
||||
QVERIFY(node && node->GetFrame());
|
||||
QCOMPARE(node->GetType(), NodeType::Frame);
|
||||
QCOMPARE(node->GetName(), frame.name);
|
||||
QVERIFY(node->GetSignal() == nullptr);
|
||||
QCOMPARE(runtime.frameIndexByKey.at(FrameKey(frame.canId, frame.isExtended)), i);
|
||||
QCOMPARE(runtime.FindFrame(FrameKey(frame.canId, frame.isExtended)).get(), &decodedFrame);
|
||||
const FrameInfo &copied = *node->GetFrame();
|
||||
QCOMPARE(copied.name, frame.name);
|
||||
QCOMPARE(decodedFrame.name, frame.name);
|
||||
|
||||
Reference in new issue
Block a user