From fdb0fc68b0807a06f7fc6429a53bc3552d21fa7e Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 30 Jan 2026 15:55:59 +0200 Subject: [PATCH 01/18] The check of 'data' added to switch/case for ValueType::IpAddress in the make function. --- src/attribute.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/attribute.cpp b/src/attribute.cpp index 6126a0d..e8ff6ef 100644 --- a/src/attribute.cpp +++ b/src/attribute.cpp @@ -58,16 +58,21 @@ Attribute* Attribute::make(uint8_t code, const std::string& type, const std::str return new Encrypted(code, data); case ValueType::IpAddress: { - using tokenizer = boost::tokenizer>; - boost::char_separator sep("."); - tokenizer tok(data, sep); - std::array ipAddr; - size_t i = 0; - for (const auto& t : tok) + if (data == "0") + ipAddr = {0}; + else { - ipAddr[i] = static_cast(std::stoul(t)); - ++i; + using tokenizer = boost::tokenizer>; + boost::char_separator sep("."); + tokenizer tok(data, sep); + + size_t i = 0; + for (const auto& t : tok) + { + ipAddr[i] = static_cast(std::stoul(t)); + ++i; + } } return new IpAddress(code, ipAddr); } From 088093a6aabe284c53cf9a8ca3ef7aa2891a3201 Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 30 Jan 2026 16:01:22 +0200 Subject: [PATCH 02/18] The functions findByName, findByCode added to classes BasicDictionary, VendorDictionary, DependentDictionary. --- src/dictionaries.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/dictionaries.cpp b/src/dictionaries.cpp index 4b772a2..15ea5af 100644 --- a/src/dictionaries.cpp +++ b/src/dictionaries.cpp @@ -52,6 +52,20 @@ void BasicDictionary::append(const BasicDictionary& basicDict) m_reverseDict.insert_or_assign(entry.first, entry.second); } +bool BasicDictionary::findByName(const std::string& name) +{ + if (!m_reverseDict.count(name)) + return false; + return true; +} + +bool BasicDictionary::findByCode(uint32_t code) +{ + if (!m_rightDict.count(code)) + return false; + return true; +} + using VendorDictionary = RadProto::VendorDictionary; std::string VendorDictionary::name(uint32_t code) const @@ -90,6 +104,20 @@ void VendorDictionary::append(const VendorDictionary& vendorDict) m_reverseDict.emplace(entry.first, entry.second); } +bool VendorDictionary::findByName(const std::string& name) +{ + if (!m_reverseDict.count(name)) + return false; + return true; +} + +bool VendorDictionary::findByCode(uint32_t code) +{ + if (!m_rightDict.count(code)) + return false; + return true; +} + using DependentDictionary = RadProto::DependentDictionary; std::string DependentDictionary::name(const std::string& dependencyName, uint32_t code) const @@ -127,6 +155,26 @@ void DependentDictionary::append(const DependentDictionary& dependentDict) m_reverseDict.insert_or_assign(entry.first, entry.second); } +bool DependentDictionary::findByName(const std::string& dependencyName, const std::string& name) +{ + std::pair key = {dependencyName, name}; + auto it = m_reverseDict.find(key); + + if (it == m_reverseDict.end()) + return false; + return true; +} + +bool DependentDictionary::findByCode(const std::string& dependencyName, uint32_t code) +{ + std::pair key = {dependencyName, code}; + auto it = m_rightDict.find(key); + + if (it == m_rightDict.end()) + return false; + return true; +} + using Dictionaries = RadProto::Dictionaries; Dictionaries::Dictionaries(const std::string& filePath) From a29b9ff14f24b84028d634afc068145137c7dc06 Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 30 Jan 2026 16:07:33 +0200 Subject: [PATCH 03/18] The functions findByName, findByCode declaration added to classes BasicDictionary, VendorDictionary, DependentDictionary. --- include/radproto/dictionaries.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/include/radproto/dictionaries.h b/include/radproto/dictionaries.h index 20cbc13..77bc75d 100644 --- a/include/radproto/dictionaries.h +++ b/include/radproto/dictionaries.h @@ -17,6 +17,8 @@ namespace RadProto void add(uint32_t code, const std::string& name, const std::string& type); void append(const BasicDictionary& basicDict); + bool findByName(const std::string& name); + bool findByCode(uint32_t code); private: std::map> m_rightDict; std::map> m_reverseDict; @@ -31,7 +33,9 @@ namespace RadProto void add(uint32_t code, const std::string& name); void append(const VendorDictionary& vendorDict); - private: + bool findByName(const std::string& name); + bool findByCode(uint32_t code); + private: std::map m_rightDict; std::map m_reverseDict; }; @@ -44,6 +48,8 @@ namespace RadProto uint32_t code(const std::string& dependencyName, const std::string& name) const; void add(uint32_t code, const std::string& name, const std::string& dependencyName); void append(const DependentDictionary& dependentDict); + bool findByName(const std::string& dependencyName, const std::string& name); + bool findByCode(const std::string& dependencyName, uint32_t code); private: std::map, std::string> m_rightDict; std::map, uint32_t> m_reverseDict; From ae68f3eda236e2ca892d9dc73616ac45bfd8d395 Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 30 Jan 2026 16:14:24 +0200 Subject: [PATCH 04/18] The test cases for TestFindByName, TestFindByCode added to BasicDictionaryTests, VendorDictionaryTests, DependentDictionaryTests. --- tests/dictionaries_tests.cpp | 60 ++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests/dictionaries_tests.cpp b/tests/dictionaries_tests.cpp index 9eba074..69a8535 100644 --- a/tests/dictionaries_tests.cpp +++ b/tests/dictionaries_tests.cpp @@ -246,6 +246,26 @@ BOOST_AUTO_TEST_CASE(TestAppend) BOOST_CHECK_EQUAL(j.type("abc"), "integer"); } +BOOST_AUTO_TEST_CASE(TestFindByName) +{ + RadProto::BasicDictionary b; + + b.add(1, "abc", "string"); + + BOOST_CHECK_EQUAL(b.findByName("abc"), true); + BOOST_CHECK_EQUAL(b.findByName("def"), false); +} + +BOOST_AUTO_TEST_CASE(TestFindByCode) +{ + RadProto::BasicDictionary b; + + b.add(1, "abc", "string"); + + BOOST_CHECK_EQUAL(b.findByCode(1), true); + BOOST_CHECK_EQUAL(b.findByCode(2), false); +} + BOOST_AUTO_TEST_CASE(TestConstructor) { RadProto::BasicDictionary b; @@ -600,6 +620,26 @@ BOOST_AUTO_TEST_CASE(TestAppend) BOOST_CHECK_EQUAL(a.code("jkl"), 4); } +BOOST_AUTO_TEST_CASE(TestFindByName) +{ + RadProto::VendorDictionary b; + + b.add(1, "Vendor-Name"); + + BOOST_CHECK_EQUAL(b.findByName("Vendor-Name"), true); + BOOST_CHECK_EQUAL(b.findByName("Name"), false); +} + +BOOST_AUTO_TEST_CASE(TestFindByCode) +{ + RadProto::VendorDictionary b; + + b.add(1, "Vendor-Name"); + + BOOST_CHECK_EQUAL(b.findByCode(1), true); + BOOST_CHECK_EQUAL(b.findByCode(2), false); +} + BOOST_AUTO_TEST_CASE(TestConstructor) { RadProto::VendorDictionary b; @@ -776,6 +816,26 @@ BOOST_AUTO_TEST_CASE(TestAppend) BOOST_CHECK_EQUAL(a.code("Service-Type", "Call-Check"), 10); } +BOOST_AUTO_TEST_CASE(TestFindByName) +{ + RadProto::DependentDictionary b; + + b.add(2, "Framed-User", "Service-Type"); + + BOOST_CHECK_EQUAL(b.findByName("Service-Type", "Framed-User"), true); + BOOST_CHECK_EQUAL(b.findByName("Service-Type", "Name"), false); +} + +BOOST_AUTO_TEST_CASE(TestFindByCode) +{ + RadProto::DependentDictionary b; + + b.add(2, "Framed-User", "Service-Type"); + + BOOST_CHECK_EQUAL(b.findByCode("Service-Type", 2), true); + BOOST_CHECK_EQUAL(b.findByCode("Service-Type", 3), false); +} + BOOST_AUTO_TEST_CASE(TestConstructor) { RadProto::DependentDictionary b; From b46db02261d3d6d9a9fe71fe71b3ac5b3aa07214 Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Mon, 2 Feb 2026 15:54:00 +0200 Subject: [PATCH 05/18] The 'const' added to the functions findByName, findByCode, attributeType. Functions attributeFindByName, attributeFindByCode, vendorFindByName, vendorFindbyCode, attributeValueFindByName, attributeValueFindByCode added to Dictionaries class. --- include/radproto/dictionaries.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/include/radproto/dictionaries.h b/include/radproto/dictionaries.h index 77bc75d..6142e16 100644 --- a/include/radproto/dictionaries.h +++ b/include/radproto/dictionaries.h @@ -17,8 +17,8 @@ namespace RadProto void add(uint32_t code, const std::string& name, const std::string& type); void append(const BasicDictionary& basicDict); - bool findByName(const std::string& name); - bool findByCode(uint32_t code); + bool findByName(const std::string& name) const; + bool findByCode(uint32_t code) const; private: std::map> m_rightDict; std::map> m_reverseDict; @@ -33,8 +33,8 @@ namespace RadProto void add(uint32_t code, const std::string& name); void append(const VendorDictionary& vendorDict); - bool findByName(const std::string& name); - bool findByCode(uint32_t code); + bool findByName(const std::string& name) const; + bool findByCode(uint32_t code) const; private: std::map m_rightDict; std::map m_reverseDict; @@ -48,8 +48,8 @@ namespace RadProto uint32_t code(const std::string& dependencyName, const std::string& name) const; void add(uint32_t code, const std::string& name, const std::string& dependencyName); void append(const DependentDictionary& dependentDict); - bool findByName(const std::string& dependencyName, const std::string& name); - bool findByCode(const std::string& dependencyName, uint32_t code); + bool findByName(const std::string& dependencyName, const std::string& name) const; + bool findByCode(const std::string& dependencyName, uint32_t code) const; private: std::map, std::string> m_rightDict; std::map, uint32_t> m_reverseDict; @@ -69,10 +69,14 @@ namespace RadProto std::string attributeName(uint32_t code) const; uint32_t attributeCode(const std::string& name) const; std::string attributeType(uint32_t code) const; - std::string attributeType(const std::string name) const; + std::string attributeType(const std::string& name) const; + bool attributeFindByName(const std::string& name) const; + bool attributeFindByCode(uint32_t) const; std::string vendorName(uint32_t code) const; uint32_t vendorCode(const std::string& name) const; + bool vendorFindByName(const std::string& name) const; + bool vendorFindByCode(uint32_t) const; std::string vendorAttributeName(const std::string& vendorName, uint32_t code) const; uint32_t vendorAttributeCode(const std::string& vendorName, const std::string& name) const; @@ -80,6 +84,9 @@ namespace RadProto std::string attributeValueName(const std::string& attributeName, uint32_t code) const; uint32_t attributeValueCode(const std::string& attributeName, const std::string& name) const; + bool attributeValuefindByName(const std::string& attributeName, const std::string& name) const; + bool attributeValuefindByCode(const std::string& dependencyName, uint32_t code) const; + std::string vendorAttributeValueName(const std::string& valueName, uint32_t code) const; uint32_t vendorAttributeValueCode(const std::string& valueName, const std::string& name) const; From a22d1cf4c5a8239a6f4a385ded72554c273f62cb Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Mon, 2 Feb 2026 16:21:55 +0200 Subject: [PATCH 06/18] The 'const' added to the functions findByName, findByCode, attributeType. Functions attributeFindByName, attributeFindByCode, vendorFindByName, vendorFindbyCode, attributeValueFindByName, attributeValueFindByCode definitions added to Dictionaries class. --- src/dictionaries.cpp | 44 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/src/dictionaries.cpp b/src/dictionaries.cpp index 15ea5af..7d332b3 100644 --- a/src/dictionaries.cpp +++ b/src/dictionaries.cpp @@ -52,14 +52,14 @@ void BasicDictionary::append(const BasicDictionary& basicDict) m_reverseDict.insert_or_assign(entry.first, entry.second); } -bool BasicDictionary::findByName(const std::string& name) +bool BasicDictionary::findByName(const std::string& name) const { if (!m_reverseDict.count(name)) return false; return true; } -bool BasicDictionary::findByCode(uint32_t code) +bool BasicDictionary::findByCode(uint32_t code) const { if (!m_rightDict.count(code)) return false; @@ -104,14 +104,14 @@ void VendorDictionary::append(const VendorDictionary& vendorDict) m_reverseDict.emplace(entry.first, entry.second); } -bool VendorDictionary::findByName(const std::string& name) +bool VendorDictionary::findByName(const std::string& name) const { if (!m_reverseDict.count(name)) return false; return true; } -bool VendorDictionary::findByCode(uint32_t code) +bool VendorDictionary::findByCode(uint32_t code) const { if (!m_rightDict.count(code)) return false; @@ -155,7 +155,7 @@ void DependentDictionary::append(const DependentDictionary& dependentDict) m_reverseDict.insert_or_assign(entry.first, entry.second); } -bool DependentDictionary::findByName(const std::string& dependencyName, const std::string& name) +bool DependentDictionary::findByName(const std::string& dependencyName, const std::string& name) const { std::pair key = {dependencyName, name}; auto it = m_reverseDict.find(key); @@ -165,7 +165,7 @@ bool DependentDictionary::findByName(const std::string& dependencyName, const st return true; } -bool DependentDictionary::findByCode(const std::string& dependencyName, uint32_t code) +bool DependentDictionary::findByCode(const std::string& dependencyName, uint32_t code) const { std::pair key = {dependencyName, code}; auto it = m_rightDict.find(key); @@ -294,11 +294,21 @@ std::string Dictionaries::attributeType(uint32_t code) const return attributes().type(code); } -std::string Dictionaries::attributeType(const std::string name) const +std::string Dictionaries::attributeType(const std::string& name) const { return attributes().type(name); } +bool Dictionaries::attributeFindByName(const std::string& name) const +{ + return attributes().findByName(name); +} + +bool Dictionaries::attributeFindByCode(uint32_t code) const +{ + return attributes().findByCode(code); +} + std::string Dictionaries::vendorName(uint32_t code) const { return vendorNames().name(code); @@ -309,6 +319,16 @@ uint32_t Dictionaries::vendorCode(const std::string& name) const return vendorNames().code(name); } +bool Dictionaries::vendorFindByName(const std::string& name) const +{ + return vendorNames().findByName(name); +} + +bool Dictionaries::vendorFindByCode(uint32_t code) const +{ + return vendorNames().findByCode(code); +} + std::string Dictionaries::vendorAttributeName(const std::string& vendorName, uint32_t code) const { return vendorAttributes().name(vendorName, code); @@ -329,6 +349,16 @@ uint32_t Dictionaries::attributeValueCode(const std::string& attributeName, cons return attributeValues().code(attributeName, name); } +bool Dictionaries::attributeValuefindByName(const std::string& attributeName, const std::string& name) const +{ + return attributeValues().findByName(attributeName, name); +} + +bool Dictionaries::attributeValuefindByCode(const std::string& attributeName, uint32_t code) const +{ + return attributeValues().findByCode(attributeName, code); +} + std::string Dictionaries::vendorAttributeValueName(const std::string& valueName, uint32_t code) const { return vendorAttributeValues().name(valueName, code); From 48de7248495a4ee5ea351d2c5a3d429faaaf18fd Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Tue, 3 Feb 2026 15:00:17 +0200 Subject: [PATCH 07/18] Functions attributeValueFindByName, attributeValueFindByCode added to Dictionaries class. --- src/dictionaries.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dictionaries.cpp b/src/dictionaries.cpp index 7d332b3..6e0a2fa 100644 --- a/src/dictionaries.cpp +++ b/src/dictionaries.cpp @@ -349,12 +349,12 @@ uint32_t Dictionaries::attributeValueCode(const std::string& attributeName, cons return attributeValues().code(attributeName, name); } -bool Dictionaries::attributeValuefindByName(const std::string& attributeName, const std::string& name) const +bool Dictionaries::attributeValueFindByName(const std::string& attributeName, const std::string& name) const { return attributeValues().findByName(attributeName, name); } -bool Dictionaries::attributeValuefindByCode(const std::string& attributeName, uint32_t code) const +bool Dictionaries::attributeValueFindByCode(const std::string& attributeName, uint32_t code) const { return attributeValues().findByCode(attributeName, code); } From bc2f416d9420114568dfdbc85311da40a166749f Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Tue, 3 Feb 2026 15:05:59 +0200 Subject: [PATCH 08/18] Functions attributeValueFindByName, attributeValueFindByCode declaration fixed in Dictionaries class. --- include/radproto/dictionaries.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/radproto/dictionaries.h b/include/radproto/dictionaries.h index 6142e16..c7a589c 100644 --- a/include/radproto/dictionaries.h +++ b/include/radproto/dictionaries.h @@ -84,8 +84,8 @@ namespace RadProto std::string attributeValueName(const std::string& attributeName, uint32_t code) const; uint32_t attributeValueCode(const std::string& attributeName, const std::string& name) const; - bool attributeValuefindByName(const std::string& attributeName, const std::string& name) const; - bool attributeValuefindByCode(const std::string& dependencyName, uint32_t code) const; + bool attributeValueFindByName(const std::string& attributeName, const std::string& name) const; + bool attributeValueFindByCode(const std::string& attributeName, uint32_t code) const; std::string vendorAttributeValueName(const std::string& valueName, uint32_t code) const; uint32_t vendorAttributeValueCode(const std::string& valueName, const std::string& name) const; From 7741d9b9e2a3bf570b8561d0564ff691f9fba4f3 Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Tue, 3 Feb 2026 15:16:51 +0200 Subject: [PATCH 09/18] Tests for functions attributeFindByName, attributeFindByCode, vendorFindByName, vendorFindbyCode, attributeValueFindByName, attributeValueFindByCode to Dictionaries_Tests. --- tests/dictionaries_tests.cpp | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tests/dictionaries_tests.cpp b/tests/dictionaries_tests.cpp index 69a8535..1b79f28 100644 --- a/tests/dictionaries_tests.cpp +++ b/tests/dictionaries_tests.cpp @@ -922,6 +922,22 @@ BOOST_AUTO_TEST_CASE(TestAttributeType) BOOST_CHECK_EQUAL(a.attributeType("abc"), "bytes"); } +BOOST_AUTO_TEST_CASE(TestAttributeFindByName) +{ + RadProto::Dictionaries a("dictionary"); + + BOOST_CHECK_EQUAL(a.attributeFindByName("User-Name"), true); + BOOST_CHECK_EQUAL(a.attributeFindByName("Name"), false); +} + +BOOST_AUTO_TEST_CASE(TestAttributeFindByCode) +{ + RadProto::Dictionaries a("dictionary"); + + BOOST_CHECK_EQUAL(a.attributeFindByCode(1), true); + BOOST_CHECK_EQUAL(a.attributeFindByCode(3), false); +} + BOOST_AUTO_TEST_CASE(TestAttributeValueName) { RadProto::Dictionaries a("dictionary"); @@ -936,6 +952,22 @@ BOOST_AUTO_TEST_CASE(TestAttributeValueCode) BOOST_CHECK_EQUAL(a.attributeValueCode("Service-Type", "Framed-User"), 2); } +BOOST_AUTO_TEST_CASE(TestAttributeValueFindByName) +{ + RadProto::Dictionaries a("dictionary"); + + BOOST_CHECK_EQUAL(a.attributeValueFindByName("Service-Type","Framed-User"), true); + BOOST_CHECK_EQUAL(a.attributeValueFindByName("Service-Type", "Framed"), false); +} + +BOOST_AUTO_TEST_CASE(TestAttributeValueFindByCode) +{ + RadProto::Dictionaries a("dictionary"); + + BOOST_CHECK_EQUAL(a.attributeValueFindByCode("Service-Type", 2), true); + BOOST_CHECK_EQUAL(a.attributeValueFindByCode("Service-Type", 3), false); +} + BOOST_AUTO_TEST_CASE(TestVendorName) { RadProto::Dictionaries a("dictionary"); @@ -950,6 +982,22 @@ BOOST_AUTO_TEST_CASE(TestVendorCode) BOOST_CHECK_EQUAL(a.vendorCode("Dlink"), 171); } +BOOST_AUTO_TEST_CASE(TestVendorFindByName) +{ + RadProto::Dictionaries a("dictionary"); + + BOOST_CHECK_EQUAL(a.vendorFindByName("Dlink"), true); + BOOST_CHECK_EQUAL(a.vendorFindByName("Name"), false); +} + +BOOST_AUTO_TEST_CASE(TestVendorFindByCode) +{ + RadProto::Dictionaries a("dictionary"); + + BOOST_CHECK_EQUAL(a.vendorFindByCode(171), true); + BOOST_CHECK_EQUAL(a.vendorFindByCode(160), false); +} + BOOST_AUTO_TEST_CASE(TestVendorAttributeName) { RadProto::Dictionaries a("dictionary"); From 1eccb52cc959cf4cbb1ff0193e3611a15c44692d Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 6 Feb 2026 14:47:20 +0200 Subject: [PATCH 10/18] The incrementing variable i in the cycle for changed in function make. --- src/attribute.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/attribute.cpp b/src/attribute.cpp index e8ff6ef..442ab32 100644 --- a/src/attribute.cpp +++ b/src/attribute.cpp @@ -69,10 +69,7 @@ Attribute* Attribute::make(uint8_t code, const std::string& type, const std::str size_t i = 0; for (const auto& t : tok) - { - ipAddr[i] = static_cast(std::stoul(t)); - ++i; - } + ipAddr[i++] = static_cast(std::stoul(t)); } return new IpAddress(code, ipAddr); } From c19b4e8780d1107bea54c549db2dee31bda3b185 Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 6 Feb 2026 15:12:32 +0200 Subject: [PATCH 11/18] Functions findByName, findByCode of class BasicDictionary changed. --- src/dictionaries.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/dictionaries.cpp b/src/dictionaries.cpp index 6e0a2fa..f4b0252 100644 --- a/src/dictionaries.cpp +++ b/src/dictionaries.cpp @@ -54,16 +54,12 @@ void BasicDictionary::append(const BasicDictionary& basicDict) bool BasicDictionary::findByName(const std::string& name) const { - if (!m_reverseDict.count(name)) - return false; - return true; + return m_reverseDict.count(name) > 0; } bool BasicDictionary::findByCode(uint32_t code) const { - if (!m_rightDict.count(code)) - return false; - return true; + return m_rightDict.count(code) > 0; } using VendorDictionary = RadProto::VendorDictionary; From 9841c40617e2926e80d439f7ccc47d45d0bd3d49 Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 6 Feb 2026 15:18:34 +0200 Subject: [PATCH 12/18] Functions findByName, findByCode of class VendorDictionary changed. --- src/dictionaries.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/dictionaries.cpp b/src/dictionaries.cpp index f4b0252..02a0db4 100644 --- a/src/dictionaries.cpp +++ b/src/dictionaries.cpp @@ -102,16 +102,12 @@ void VendorDictionary::append(const VendorDictionary& vendorDict) bool VendorDictionary::findByName(const std::string& name) const { - if (!m_reverseDict.count(name)) - return false; - return true; + return m_reverseDict.count(name) > 0; } bool VendorDictionary::findByCode(uint32_t code) const { - if (!m_rightDict.count(code)) - return false; - return true; + return m_rightDict.count(code) > 0; } using DependentDictionary = RadProto::DependentDictionary; From 4af54c14720e58e2605f42d18ddccc24090c111d Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 6 Feb 2026 15:31:32 +0200 Subject: [PATCH 13/18] Functions findByName, findByCode of class DependentDictionary changed. --- src/dictionaries.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/dictionaries.cpp b/src/dictionaries.cpp index 02a0db4..08df397 100644 --- a/src/dictionaries.cpp +++ b/src/dictionaries.cpp @@ -150,21 +150,13 @@ void DependentDictionary::append(const DependentDictionary& dependentDict) bool DependentDictionary::findByName(const std::string& dependencyName, const std::string& name) const { std::pair key = {dependencyName, name}; - auto it = m_reverseDict.find(key); - - if (it == m_reverseDict.end()) - return false; - return true; + return m_reverseDict.count(key) > 0; } bool DependentDictionary::findByCode(const std::string& dependencyName, uint32_t code) const { std::pair key = {dependencyName, code}; - auto it = m_rightDict.find(key); - - if (it == m_rightDict.end()) - return false; - return true; + return m_rightDict.count(key) > 0; } using Dictionaries = RadProto::Dictionaries; From 3737d652387da828ee85300c26ad9c306099b9cb Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 6 Feb 2026 16:01:25 +0200 Subject: [PATCH 14/18] Test cases TestFindByName, TestFindByCode combined into a singl test case TestsFindByNameAndFindByCode in suites BasicDictionaryTests, VendorDictionaryTests, DependentDictionaryTests. The test cases for TestAttributeValueFindByName, TestAttributeValueFindByCode combined into a singl test case TestsAttributeValueFindByNameAndAttributeValueFindByCode in cuite DictionariesTests. --- tests/dictionaries_tests.cpp | 34 ++++------------------------------ 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/tests/dictionaries_tests.cpp b/tests/dictionaries_tests.cpp index 1b79f28..de5d3d4 100644 --- a/tests/dictionaries_tests.cpp +++ b/tests/dictionaries_tests.cpp @@ -246,7 +246,7 @@ BOOST_AUTO_TEST_CASE(TestAppend) BOOST_CHECK_EQUAL(j.type("abc"), "integer"); } -BOOST_AUTO_TEST_CASE(TestFindByName) +BOOST_AUTO_TEST_CASE(TestsFindByNameAndFindByCode) { RadProto::BasicDictionary b; @@ -254,13 +254,6 @@ BOOST_AUTO_TEST_CASE(TestFindByName) BOOST_CHECK_EQUAL(b.findByName("abc"), true); BOOST_CHECK_EQUAL(b.findByName("def"), false); -} - -BOOST_AUTO_TEST_CASE(TestFindByCode) -{ - RadProto::BasicDictionary b; - - b.add(1, "abc", "string"); BOOST_CHECK_EQUAL(b.findByCode(1), true); BOOST_CHECK_EQUAL(b.findByCode(2), false); @@ -620,7 +613,7 @@ BOOST_AUTO_TEST_CASE(TestAppend) BOOST_CHECK_EQUAL(a.code("jkl"), 4); } -BOOST_AUTO_TEST_CASE(TestFindByName) +BOOST_AUTO_TEST_CASE(TestsFindByNameAndFindByCode) { RadProto::VendorDictionary b; @@ -628,13 +621,6 @@ BOOST_AUTO_TEST_CASE(TestFindByName) BOOST_CHECK_EQUAL(b.findByName("Vendor-Name"), true); BOOST_CHECK_EQUAL(b.findByName("Name"), false); -} - -BOOST_AUTO_TEST_CASE(TestFindByCode) -{ - RadProto::VendorDictionary b; - - b.add(1, "Vendor-Name"); BOOST_CHECK_EQUAL(b.findByCode(1), true); BOOST_CHECK_EQUAL(b.findByCode(2), false); @@ -816,7 +802,7 @@ BOOST_AUTO_TEST_CASE(TestAppend) BOOST_CHECK_EQUAL(a.code("Service-Type", "Call-Check"), 10); } -BOOST_AUTO_TEST_CASE(TestFindByName) +BOOST_AUTO_TEST_CASE(TestsFindByNameAndFindByCode) { RadProto::DependentDictionary b; @@ -824,13 +810,6 @@ BOOST_AUTO_TEST_CASE(TestFindByName) BOOST_CHECK_EQUAL(b.findByName("Service-Type", "Framed-User"), true); BOOST_CHECK_EQUAL(b.findByName("Service-Type", "Name"), false); -} - -BOOST_AUTO_TEST_CASE(TestFindByCode) -{ - RadProto::DependentDictionary b; - - b.add(2, "Framed-User", "Service-Type"); BOOST_CHECK_EQUAL(b.findByCode("Service-Type", 2), true); BOOST_CHECK_EQUAL(b.findByCode("Service-Type", 3), false); @@ -952,17 +931,12 @@ BOOST_AUTO_TEST_CASE(TestAttributeValueCode) BOOST_CHECK_EQUAL(a.attributeValueCode("Service-Type", "Framed-User"), 2); } -BOOST_AUTO_TEST_CASE(TestAttributeValueFindByName) +BOOST_AUTO_TEST_CASE(TestsAttributeValueFindByNameAndAttributeValueFindByCode) { RadProto::Dictionaries a("dictionary"); BOOST_CHECK_EQUAL(a.attributeValueFindByName("Service-Type","Framed-User"), true); BOOST_CHECK_EQUAL(a.attributeValueFindByName("Service-Type", "Framed"), false); -} - -BOOST_AUTO_TEST_CASE(TestAttributeValueFindByCode) -{ - RadProto::Dictionaries a("dictionary"); BOOST_CHECK_EQUAL(a.attributeValueFindByCode("Service-Type", 2), true); BOOST_CHECK_EQUAL(a.attributeValueFindByCode("Service-Type", 3), false); From c02e89d17a93f7e4a84dc9697e5b7729753bed9f Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 6 Feb 2026 16:27:02 +0200 Subject: [PATCH 15/18] The test cases for TestAttributeFindByName, TestAttributeFindByCode combined into a singl test case TestsAttributeFindByNameAndAttributeFindByCode in cuite DictionariesTests. --- tests/dictionaries_tests.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/dictionaries_tests.cpp b/tests/dictionaries_tests.cpp index de5d3d4..f278e0b 100644 --- a/tests/dictionaries_tests.cpp +++ b/tests/dictionaries_tests.cpp @@ -901,17 +901,12 @@ BOOST_AUTO_TEST_CASE(TestAttributeType) BOOST_CHECK_EQUAL(a.attributeType("abc"), "bytes"); } -BOOST_AUTO_TEST_CASE(TestAttributeFindByName) +BOOST_AUTO_TEST_CASE(TestsAttributeFindByNameAndAttributeFindByCode) { RadProto::Dictionaries a("dictionary"); BOOST_CHECK_EQUAL(a.attributeFindByName("User-Name"), true); BOOST_CHECK_EQUAL(a.attributeFindByName("Name"), false); -} - -BOOST_AUTO_TEST_CASE(TestAttributeFindByCode) -{ - RadProto::Dictionaries a("dictionary"); BOOST_CHECK_EQUAL(a.attributeFindByCode(1), true); BOOST_CHECK_EQUAL(a.attributeFindByCode(3), false); From 433358083155cab6397c0e4cdcfd3ea9db97a74e Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 6 Feb 2026 16:52:30 +0200 Subject: [PATCH 16/18] The test cases for TestVendorFindByName, TestVendorFindByCode combined into a singl test case TestsVendorFindByNameAndVendorFindByCode in cuite DictionariesTests. --- tests/dictionaries_tests.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/dictionaries_tests.cpp b/tests/dictionaries_tests.cpp index f278e0b..2c1a3c9 100644 --- a/tests/dictionaries_tests.cpp +++ b/tests/dictionaries_tests.cpp @@ -951,17 +951,12 @@ BOOST_AUTO_TEST_CASE(TestVendorCode) BOOST_CHECK_EQUAL(a.vendorCode("Dlink"), 171); } -BOOST_AUTO_TEST_CASE(TestVendorFindByName) +BOOST_AUTO_TEST_CASE(TestsVendorFindByNameAndVendorByCode) { RadProto::Dictionaries a("dictionary"); BOOST_CHECK_EQUAL(a.vendorFindByName("Dlink"), true); BOOST_CHECK_EQUAL(a.vendorFindByName("Name"), false); -} - -BOOST_AUTO_TEST_CASE(TestVendorFindByCode) -{ - RadProto::Dictionaries a("dictionary"); BOOST_CHECK_EQUAL(a.vendorFindByCode(171), true); BOOST_CHECK_EQUAL(a.vendorFindByCode(160), false); From 676fe33ffec33d185cbbd2e3a5b99117642a6932 Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Fri, 6 Feb 2026 19:00:38 +0200 Subject: [PATCH 17/18] The name case TestsVendorFindByNameAndVendorFindByCode fixed. --- tests/dictionaries_tests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/dictionaries_tests.cpp b/tests/dictionaries_tests.cpp index 2c1a3c9..cd708fc 100644 --- a/tests/dictionaries_tests.cpp +++ b/tests/dictionaries_tests.cpp @@ -951,7 +951,7 @@ BOOST_AUTO_TEST_CASE(TestVendorCode) BOOST_CHECK_EQUAL(a.vendorCode("Dlink"), 171); } -BOOST_AUTO_TEST_CASE(TestsVendorFindByNameAndVendorByCode) +BOOST_AUTO_TEST_CASE(TestsVendorFindByNameAndVendorFindByCode) { RadProto::Dictionaries a("dictionary"); From 2f360270f800589e9b6268c0a97f7ca828ffc15c Mon Sep 17 00:00:00 2001 From: Elena Mamontova Date: Mon, 9 Feb 2026 16:27:03 +0200 Subject: [PATCH 18/18] Unnecessary variable removed in functions findByName, findByCode in the class DependentDictionary. --- src/dictionaries.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/dictionaries.cpp b/src/dictionaries.cpp index 08df397..0cd7fc0 100644 --- a/src/dictionaries.cpp +++ b/src/dictionaries.cpp @@ -149,14 +149,12 @@ void DependentDictionary::append(const DependentDictionary& dependentDict) bool DependentDictionary::findByName(const std::string& dependencyName, const std::string& name) const { - std::pair key = {dependencyName, name}; - return m_reverseDict.count(key) > 0; + return m_reverseDict.count({dependencyName, name}) > 0; } bool DependentDictionary::findByCode(const std::string& dependencyName, uint32_t code) const { - std::pair key = {dependencyName, code}; - return m_rightDict.count(key) > 0; + return m_rightDict.count({dependencyName, code}) > 0; } using Dictionaries = RadProto::Dictionaries;