alb3rtobr commented on a change in pull request #619:
URL: https://github.com/apache/geode-native/pull/619#discussion_r442558200
##########
File path: cppcache/integration/test/PdxJsonTypeTest.cpp
##########
@@ -142,4 +146,91 @@ TEST(PdxJsonTypeTest, testTwoConsecutiveGets) {
std::dynamic_pointer_cast<PdxInstance>(region2->get("simpleObject")));
}
+TEST(PdxJsonTypeTest, testTwoObjectsWithSameFieldsHaveTheSameHash) {
+ Cluster cluster{LocatorCount{1}, ServerCount{1}};
+ cluster.start();
+ cluster.getGfsh()
+ .create()
+ .region()
+ .withName("region")
+ .withType("REPLICATE")
+ .execute();
+
+ auto cache = cluster.createCache();
+
+ auto properties = std::make_shared<Properties>();
+ CacheImpl cacheImpl(&cache, properties, false, false, nullptr);
+
+ PdxTypeRegistry pdxTypeRegistry(&cacheImpl);
+
+ apache::geode::client::PdxType m_pdxType1(pdxTypeRegistry,
gemfireJsonClassName,false);
+ apache::geode::client::PdxType m_pdxType2(pdxTypeRegistry,
gemfireJsonClassName,false);
+
+ m_pdxType1.addVariableLengthTypeField("bar0", "string",
PdxFieldTypes::STRING);
+ m_pdxType1.addVariableLengthTypeField("bar1", "string",
PdxFieldTypes::STRING);
+
+ m_pdxType2.addVariableLengthTypeField("bar0", "string",
PdxFieldTypes::STRING);
+ m_pdxType2.addVariableLengthTypeField("bar1", "string",
PdxFieldTypes::STRING);
+
+ EXPECT_EQ(std::hash<PdxType>(m_pdxType1),std::hash<PdxType>(m_pdxType2));
+}
+
+TEST(PdxJsonTypeTest, testTwoObjectsWithDifferentFieldsHaveDifferentHash) {
+ Cluster cluster{LocatorCount{1}, ServerCount{1}};
+ cluster.start();
+ cluster.getGfsh()
+ .create()
+ .region()
+ .withName("region")
+ .withType("REPLICATE")
+ .execute();
+
+ auto cache = cluster.createCache();
+
+ auto properties = std::make_shared<Properties>();
+ CacheImpl cacheImpl(&cache, properties, false, false, nullptr);
+
+ PdxTypeRegistry pdxTypeRegistry(&cacheImpl);
+
+ apache::geode::client::PdxType m_pdxType1(pdxTypeRegistry,
gemfireJsonClassName,false);
+ apache::geode::client::PdxType m_pdxType2(pdxTypeRegistry,
gemfireJsonClassName,false);
+
+ m_pdxType1.addVariableLengthTypeField("bar0", "string",
PdxFieldTypes::STRING);
+ m_pdxType1.addVariableLengthTypeField("bar1", "string",
PdxFieldTypes::STRING);
+
+ m_pdxType2.addVariableLengthTypeField("bar2", "string",
PdxFieldTypes::STRING);
+ m_pdxType2.addVariableLengthTypeField("bar3", "string",
PdxFieldTypes::STRING);
+
+ EXPECT_NE(std::hash<PdxType>(m_pdxType1),std::hash<PdxType>(m_pdxType2));
Review comment:
Thank to your comment I have realized the assertions are wrong. Thing is
that in the assertions I was using `m_pdxType1.hashcode()` instead of
`std::hash<PdxType>(m_pdxType1)`, that was a change I did right before adding
the commit with the tests to the PR and its causing the compilation to fail in
other place different than the linker error I was asking for. I have just added
the correct code of the assertions.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]