Skip to content
Snippets Groups Projects
Commit 0894d40e authored by Andrea Michelotti's avatar Andrea Michelotti
Browse files

haskey

parents ff8ec4f2 145ea918
No related branches found
No related tags found
No related merge requests found
......@@ -98,6 +98,32 @@ TEST(CDataWrapperTest, Performance) {
ASSERT_TRUE(cloned->isBoolValue("bv"));
data_pack.reset();
}
}
TEST(CDataWrapperTest, haKey) {
int idx = 0;
CDataWrapper data_pack;
data_pack.addBoolValue("bv", (int32_t)0);
data_pack.addInt32Value("i32v", (int32_t)0);
data_pack.addInt32Value("i32v.pippo", (int32_t)0);
data_pack.addDoubleValue("dbv", (double)36.6);
data_pack.addDoubleValue("dbv.pippo", (double)37.6);
ASSERT_TRUE(data_pack.hasKey("bv"));
ASSERT_FALSE(data_pack.hasKey("bva"));
ASSERT_FALSE(data_pack.hasKey("bv.pippo"));
ASSERT_TRUE(data_pack.hasKey("dbv"));
ASSERT_FALSE(data_pack.hasKey("dbva"));
ASSERT_FALSE(data_pack.hasKey("dbv.pippa"));
ASSERT_TRUE(data_pack.hasKey("dbv.pippo"));
ASSERT_TRUE(data_pack.hasKey("i32v"));
ASSERT_FALSE(data_pack.hasKey("i32va"));
ASSERT_FALSE(data_pack.hasKey("i32v.pippa"));
ASSERT_TRUE(data_pack.hasKey("i32v.pippo"));
}
TEST(CDataWrapperTest, TestJsonDouble) {
const char* test_json_translation="{\"double_key\":[1.0,2.1,-1.0,-0.9]}";
......
......@@ -811,7 +811,17 @@ CDBufferUniquePtr CDataWrapper::getBinaryValueAsCDataBuffer(const std::string& k
// check if the key is present in data wrapper
bool CDataWrapper::hasKey(const std::string& key) const {
return bson_has_field(ACCESS_BSON(bson), key.c_str());
bson_iter_t iter;
bson_iter_t child;
BSON_ASSERT (bson);
if(key.size()==0) return false;
if(strchr(key.c_str(),'.')){
// if contains . cannot recurse
return (bson_iter_init (&iter, ACCESS_BSON(bson)) && bson_iter_find (&iter, key.c_str()));
}
return (bson_iter_init (&iter, ACCESS_BSON(bson)) && bson_iter_find_descendant (&iter, key.c_str(), &child));
}
bool CDataWrapper::isVector(const std::string& key) const {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment