From 823abf1768ba1d3813f88af3a4bab80c1a1dba44 Mon Sep 17 00:00:00 2001 From: Andrei Pavel Date: Thu, 6 Aug 2026 14:42:30 +0300 Subject: [PATCH] [#4638] Document MapElement::get(int) --- src/lib/cc/data.h | 3 ++- src/lib/cc/tests/data_unittests.cc | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/lib/cc/data.h b/src/lib/cc/data.h index aa30818d84..df50c36288 100644 --- a/src/lib/cc/data.h +++ b/src/lib/cc/data.h @@ -981,9 +981,10 @@ public: /// @brief Get the i-th element in the map. /// /// Useful when required to iterate with an index. + /// Returns a string holding the key. /// /// @param i the position of the element you want to return - /// @return the element at position i + /// @return the key element at position i ConstElementPtr get(int const i) const override { auto it(m.begin()); std::advance(it, i); diff --git a/src/lib/cc/tests/data_unittests.cc b/src/lib/cc/tests/data_unittests.cc index d44443552e..c7ff083593 100644 --- a/src/lib/cc/tests/data_unittests.cc +++ b/src/lib/cc/tests/data_unittests.cc @@ -873,6 +873,31 @@ TEST(Element, mapElementRemoveOutOfRange) { EXPECT_FALSE(el->get("a")); } +// Verifies that MapElement::get(int) returns the key at the index. +TEST(Element, mapElementGetByIndex) { + ElementPtr el = Element::fromJSON(R"({"alpha": 1, "beta": 2})"); + ASSERT_EQ(2, static_cast(el->size())); + + // Ordered map: index 0 is key "alpha", index 1 is key "beta". + ConstElementPtr g0 = el->get(0); + ASSERT_TRUE(g0); + EXPECT_EQ(Element::string, g0->getType()); + EXPECT_EQ("alpha", g0->stringValue()); + + ConstElementPtr g1 = el->get(1); + ASSERT_TRUE(g1); + EXPECT_EQ(Element::string, g1->getType()); + EXPECT_EQ("beta", g1->stringValue()); + + // Mixed value types: string then nested map. + el = Element::fromJSON(R"({"name": "foo", "value2": {"number": 42}})"); + ASSERT_EQ(2, static_cast(el->size())); + EXPECT_EQ(Element::string, el->get(0)->getType()); + EXPECT_EQ("name", el->get(0)->stringValue()); + EXPECT_EQ(Element::string, el->get(1)->getType()); + EXPECT_EQ("value2", el->get(1)->stringValue()); +} + TEST(Element, toAndFromWire) { // Wire format is now plain JSON. EXPECT_EQ("1", Element::create(1)->toWire()); -- 2.47.3