From 925e4c1ee57e16cb455d422194ef5df541392fc4 Mon Sep 17 00:00:00 2001 From: "johannes.gotlen" Date: Tue, 4 Mar 2025 14:35:15 +0100 Subject: [PATCH] Fixes missing skeleton IDs --- SettingsDeserializer.cpp | 2 +- Tests/Data/Skeleton.h | 128 ++++++++++++++++++++++++++++++ Tests/SkeletonParametersTests.cpp | 11 +-- 3 files changed, 135 insertions(+), 6 deletions(-) diff --git a/SettingsDeserializer.cpp b/SettingsDeserializer.cpp index 30eeb81..25f41b8 100644 --- a/SettingsDeserializer.cpp +++ b/SettingsDeserializer.cpp @@ -1913,7 +1913,7 @@ bool SettingsDeserializer::DeserializeSkeletonSettings(bool skeletonGlobalData, { segmentHierarchical.name = segmentElem.ReadAttributeString("Name"); - segmentElem.TryReadElementUnsignedInt32("ID", segmentHierarchical.id); + segmentHierarchical.id = segmentElem.ReadAttributeInt("ID"); segmentIdIndexMap[segmentHierarchical.id] = segmentIndex++; segmentElem.TryReadElementString("Solver", segmentHierarchical.solver); diff --git a/Tests/Data/Skeleton.h b/Tests/Data/Skeleton.h index 6c51d5b..d8985a6 100644 --- a/Tests/Data/Skeleton.h +++ b/Tests/Data/Skeleton.h @@ -1,6 +1,134 @@ #pragma once namespace qualisys_cpp_sdk::tests::data { + inline const char* SkeletonSettingsGet = R"XMLDATA( + + + + 1.100000 + + + Global Optimization + + + + + + + + + + + + + + + + + + + + + + 3.000000 + + + + 7.000000 + + + + + + + + + 3.000000 + + + + + + + 7.000000 + + + + Global Optimization + + + + + + + + + + + + + + + + + + + + + + 3.000000 + + + + 7.000000 + + + + + + + + + 1.000000 + + + Global Optimization + + + + + + + + + + + + + + + + + + + + + + 3.000000 + + + + 7.000000 + + + + + + + + +)XMLDATA"; + inline const char* SkeletonSettingsSet = R"XMLDATA( diff --git a/Tests/SkeletonParametersTests.cpp b/Tests/SkeletonParametersTests.cpp index 2f64ef0..e725281 100644 --- a/Tests/SkeletonParametersTests.cpp +++ b/Tests/SkeletonParametersTests.cpp @@ -86,11 +86,11 @@ namespace std::vector CreateDummySkeletonsNonHierarchical() { auto segmentsSkeleton1 = std::vector({ - { { 0, 0.0f, 1.0f, 2.0f, 0.707000017f, -0.707000017f, 0.0f, 0.0f }, "segment1", -1, -1 }, - { { 0, 3.0f, 4.0f, 5.0f, 0.707000017f, 0.707000017f, 0.0f, 0.0f }, "segment3", 0, 1 } + { { 1, 0.0f, 1.0f, 2.0f, 0.707000017f, -0.707000017f, 0.0f, 0.0f }, "segment1", -1, -1 }, + { { 3, 3.0f, 4.0f, 5.0f, 0.707000017f, 0.707000017f, 0.0f, 0.0f }, "segment3", 0, 1 } }); auto segmentsSkeleton2 = std::vector({ - { { 0, 0.0f, 1.0f, 2.0f, 0.707000017f, 0.0f, 0.707000017f, 0.0f }, "segment2", -1, -1 } + { { 2, 0.0f, 1.0f, 2.0f, 0.707000017f, 0.0f, 0.707000017f, 0.0f }, "segment2", -1, -1 } }); CRTProtocol::SSettingsSkeleton skeleton1 = { "skeleton1", segmentsSkeleton1 }; @@ -144,7 +144,7 @@ TEST_CASE("GetSkeletonSettings") { auto [protocol, network] = utils::CreateTestContext(); - network->PrepareResponse("GetParameters Skeleton", data::SkeletonSettingsSet, + network->PrepareResponse("GetParameters Skeleton", data::SkeletonSettingsGet, CRTPacket::PacketXML); using namespace qualisys_cpp_sdk::tests; @@ -166,6 +166,7 @@ TEST_CASE("GetSkeletonSettings") const CRTProtocol::SSettingsSkeletonSegmentHierarchical& actualSegment) { CHECK_EQ(expectedSegment.name, actualSegment.name); + CHECK_EQ(expectedSegment.id, actualSegment.id); CHECK_EQ(expectedSegment.segments.size(), actualSegment.segments.size()); @@ -256,7 +257,7 @@ TEST_CASE("GetSkeletonSettingsNonHierarchical") { auto [protocol, network] = utils::CreateTestContext(); - network->PrepareResponse("GetParameters Skeleton", data::SkeletonSettingsSet, + network->PrepareResponse("GetParameters Skeleton", data::SkeletonSettingsGet, CRTPacket::PacketXML); using namespace qualisys_cpp_sdk::tests;