Skip to content

Commit 5d79678

Browse files
committed
Increase coverage
1 parent f5e7570 commit 5d79678

File tree

5 files changed

+27
-24
lines changed

5 files changed

+27
-24
lines changed

extras/tests/JsonVariant/unbound.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ TEST_CASE("Unbound JsonVariant") {
4444
CHECK_FALSE(variant.set(42L));
4545
CHECK_FALSE(variant.set(42U));
4646
CHECK_FALSE(variant.set(serialized("42")));
47+
CHECK_FALSE(variant.set(serialized(std::string("42"))));
4748
CHECK_FALSE(variant.set(true));
4849
}
4950

@@ -63,4 +64,13 @@ TEST_CASE("Unbound JsonVariant") {
6364
CHECK_FALSE(variant["key"].set(1));
6465
CHECK_FALSE(variant[std::string("key")].set(1));
6566
}
67+
68+
SECTION("containsKey()") {
69+
CHECK_FALSE(variant.containsKey("hello"));
70+
}
71+
72+
SECTION("remove()") {
73+
variant.remove(0);
74+
variant.remove("hello");
75+
}
6676
}

src/ArduinoJson/Collection/CollectionFunctions.hpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ inline VariantData* collectionAddMember(CollectionData* obj, TAdaptedString key,
2424
MemoryPool* pool) {
2525
ARDUINOJSON_ASSERT(!key.isNull());
2626
ARDUINOJSON_ASSERT(obj != nullptr);
27-
if (!obj)
28-
return nullptr;
2927
auto slot = pool->allocVariant();
3028
if (!slot)
3129
return nullptr;
@@ -67,6 +65,14 @@ inline bool collectionCopy(CollectionData* dst, const CollectionData* src,
6765
return true;
6866
}
6967

68+
template <typename TAdaptedString>
69+
inline VariantData* collectionGetMember(const CollectionData* obj,
70+
TAdaptedString key) {
71+
if (!obj)
72+
return nullptr;
73+
return slotData(obj->get(key));
74+
}
75+
7076
inline void collectionRemove(CollectionData* data, VariantSlot* slot,
7177
MemoryPool* pool) {
7278
if (!data || !slot)

src/ArduinoJson/Collection/CollectionImpl.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ inline VariantSlot* CollectionData::getPrevious(VariantSlot* target) const {
5959
}
6060

6161
inline void CollectionData::remove(VariantSlot* slot) {
62-
if (!slot)
63-
return;
62+
ARDUINOJSON_ASSERT(slot != nullptr);
6463
VariantSlot* prev = getPrevious(slot);
6564
VariantSlot* next = slot->next();
6665
if (prev)

src/ArduinoJson/Object/JsonObject.hpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
150150
FORCE_INLINE
151151
typename detail::enable_if<detail::IsString<TString>::value, bool>::type
152152
containsKey(const TString& key) const {
153-
return getMember(detail::adaptString(key)) != 0;
153+
return collectionGetMember(_data, detail::adaptString(key)) != 0;
154154
}
155155

156156
// Returns true if the object contains the specified key.
@@ -159,7 +159,7 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
159159
FORCE_INLINE
160160
typename detail::enable_if<detail::IsString<TChar*>::value, bool>::type
161161
containsKey(TChar* key) const {
162-
return getMember(detail::adaptString(key)) != 0;
162+
return collectionGetMember(_data, detail::adaptString(key)) != 0;
163163
}
164164

165165
// Creates an array and adds it to the object.
@@ -199,13 +199,6 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
199199
return detail::collectionToVariant(_data);
200200
}
201201

202-
template <typename TAdaptedString>
203-
inline detail::VariantData* getMember(TAdaptedString key) const {
204-
if (!_data)
205-
return 0;
206-
return slotData(_data->get(key));
207-
}
208-
209202
template <typename TAdaptedString>
210203
void removeMember(TAdaptedString key) const {
211204
collectionRemove(_data, _data->get(key), _pool);

src/ArduinoJson/Object/JsonObjectConst.hpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,14 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
7676
// https://arduinojson.org/v6/api/jsonobjectconst/containskey/
7777
template <typename TString>
7878
FORCE_INLINE bool containsKey(const TString& key) const {
79-
return getMember(detail::adaptString(key)) != 0;
79+
return collectionGetMember(_data, detail::adaptString(key)) != 0;
8080
}
8181

8282
// Returns true if the object contains the specified key.
8383
// https://arduinojson.org/v6/api/jsonobjectconst/containskey/
8484
template <typename TChar>
8585
FORCE_INLINE bool containsKey(TChar* key) const {
86-
return getMember(detail::adaptString(key)) != 0;
86+
return collectionGetMember(_data, detail::adaptString(key)) != 0;
8787
}
8888

8989
// Gets the member with specified key.
@@ -92,7 +92,8 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
9292
FORCE_INLINE typename detail::enable_if<detail::IsString<TString>::value,
9393
JsonVariantConst>::type
9494
operator[](const TString& key) const {
95-
return JsonVariantConst(getMember(detail::adaptString(key)));
95+
return JsonVariantConst(
96+
collectionGetMember(_data, detail::adaptString(key)));
9697
}
9798

9899
// Gets the member with specified key.
@@ -101,7 +102,8 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
101102
FORCE_INLINE typename detail::enable_if<detail::IsString<TChar*>::value,
102103
JsonVariantConst>::type
103104
operator[](TChar* key) const {
104-
return JsonVariantConst(getMember(detail::adaptString(key)));
105+
return JsonVariantConst(
106+
collectionGetMember(_data, detail::adaptString(key)));
105107
}
106108

107109
// Compares objects.
@@ -126,13 +128,6 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
126128
return collectionToVariant(_data);
127129
}
128130

129-
template <typename TAdaptedString>
130-
const detail::VariantData* getMember(TAdaptedString key) const {
131-
if (!_data)
132-
return 0;
133-
return slotData(_data->get(key));
134-
}
135-
136131
const detail::CollectionData* _data;
137132
};
138133

0 commit comments

Comments
 (0)