MCPcopy Create free account
hub / github.com/OSGeo/gdal / testMove

Function testMove

autotest/cpp/test_ogr.cpp:379–411  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

377}
378
379template <class T> void testMove()
380{
381 auto poSRS = new OGRSpatialReference();
382 {
383 auto poOrigin = std::unique_ptr<T>(make<T>());
384 ASSERT_TRUE(nullptr != poOrigin);
385 poOrigin->assignSpatialReference(poSRS);
386
387 T valueCopy(*poOrigin);
388 const int refCountBefore = poSRS->GetReferenceCount();
389 T fromMoved(std::move(*poOrigin));
390 EXPECT_EQ(poSRS->GetReferenceCount(), refCountBefore);
391
392 ASSERT_TRUE(CPL_TO_BOOL(fromMoved.Equals(&valueCopy)))
393 << valueCopy.getGeometryName()
394 << ": move constructor changed a value";
395 EXPECT_EQ(fromMoved.getSpatialReference(), poSRS);
396
397 T valueCopy2(valueCopy);
398 EXPECT_EQ(valueCopy.getSpatialReference(), poSRS);
399 T value3;
400 const int refCountBefore2 = poSRS->GetReferenceCount();
401 value3 = std::move(valueCopy);
402 EXPECT_EQ(poSRS->GetReferenceCount(), refCountBefore2);
403
404 ASSERT_TRUE(CPL_TO_BOOL(value3.Equals(&valueCopy2)))
405 << valueCopy2.getGeometryName()
406 << ": move assignment operator changed a value";
407 EXPECT_EQ(value3.getSpatialReference(), poSRS);
408 }
409 EXPECT_EQ(poSRS->GetReferenceCount(), 1);
410 poSRS->Release();
411}
412
413TEST_F(test_ogr, geometry_move)
414{

Callers

nothing calls this directly

Calls 7

moveFunction · 0.85
CPL_TO_BOOLFunction · 0.85
GetReferenceCountMethod · 0.80
EqualsMethod · 0.45
getGeometryNameMethod · 0.45
ReleaseMethod · 0.45

Tested by

no test coverage detected