From 7a3420d7d57e754ba0836c13bee980179653816d Mon Sep 17 00:00:00 2001 From: gaouizer Date: Fri, 5 Jul 2024 18:10:35 +0200 Subject: [PATCH] make discrete measurement id optional on reading Signed-off-by: gaouizer add test Signed-off-by: gaouizer improve test case Signed-off-by: gaouizer --- extensions/iidm/resources/disMeasRef.xml | 10 ++++++++++ .../src/DiscreteMeasurementsXmlSerializer.cpp | 5 ++++- .../iidm/test/DiscreteMeasurementsTest.cpp | 17 +++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/extensions/iidm/resources/disMeasRef.xml b/extensions/iidm/resources/disMeasRef.xml index 08a386e4..75e7040f 100644 --- a/extensions/iidm/resources/disMeasRef.xml +++ b/extensions/iidm/resources/disMeasRef.xml @@ -206,6 +206,16 @@ + + + + + + + + + + diff --git a/extensions/iidm/src/DiscreteMeasurementsXmlSerializer.cpp b/extensions/iidm/src/DiscreteMeasurementsXmlSerializer.cpp index a128544f..589f09b8 100644 --- a/extensions/iidm/src/DiscreteMeasurementsXmlSerializer.cpp +++ b/extensions/iidm/src/DiscreteMeasurementsXmlSerializer.cpp @@ -52,9 +52,12 @@ Extension& DiscreteMeasurementsXmlSerializer::read(Extendable& extendable, conve void DiscreteMeasurementsXmlSerializer::readDiscreteMeasurement(DiscreteMeasurements& discreteMeasurements, const xml::XmlStreamReader& reader) { DiscreteMeasurementAdder adder = discreteMeasurements.newDiscreteMeasurement() - .setId(reader.getAttributeValue(ID)) .setType(Enum::fromString(reader.getAttributeValue(TYPE))) .setValid(reader.getAttributeValue(VALID)); + const std::string& dmId = reader.getOptionalAttributeValue(ID, ""); + if (!dmId.empty()) { + adder.setId(dmId); + } const std::string& tapChanger = reader.getOptionalAttributeValue(TAP_CHANGER, ""); if (!tapChanger.empty()) { adder.setTapChanger(Enum::fromString(tapChanger)); diff --git a/extensions/iidm/test/DiscreteMeasurementsTest.cpp b/extensions/iidm/test/DiscreteMeasurementsTest.cpp index d21b674b..c9b7c2f8 100644 --- a/extensions/iidm/test/DiscreteMeasurementsTest.cpp +++ b/extensions/iidm/test/DiscreteMeasurementsTest.cpp @@ -227,6 +227,23 @@ BOOST_FIXTURE_TEST_CASE(DiscreteMeasurementsXmlSerializerTest, test::ResourceFix .putProperty("source", "test2") .add(); + Switch& sw2 = network.getSwitch("S1VL1_BBS_TWT_DISCONNECTOR"); + sw2.newExtension().add(); + sw2.getExtension() + .newDiscreteMeasurement() + .setType(DiscreteMeasurement::Type::SWITCH_POSITION) + .setValue("CLOSED") + .setValid(false) + .putProperty("source", "test") + .add(); + sw2.getExtension() + .newDiscreteMeasurement() + .setType(DiscreteMeasurement::Type::OTHER) + .setValue("CLOSED") + .setValid(false) + .putProperty("source", "test") + .add(); + const std::string& networkStrRef = ResourceFixture::getResource("/disMeasRef.xml"); test::converter::RoundTrip::runXml(network, networkStrRef);