@@ -317,7 +317,6 @@ TEST testPDALGetPointViewLayout(void)
317317
318318TEST testPDALGetPackedPoint(void)
319319{
320- // PDALGetPackedPoint(PDALPointViewPtr view, PDALDimTypeListPtr dims, PDALPointId idx, char *buf)
321320 PDALResetPointViewIterator(gPointViewIterator);
322321 bool hasNext = PDALHasNextPointView(gPointViewIterator);
323322 ASSERT(hasNext);
@@ -363,6 +362,64 @@ TEST testPDALGetPackedPoint(void)
363362 PASS();
364363}
365364
365+ TEST testPDALGetAllPackedPoints(void)
366+ {
367+ PDALResetPointViewIterator(gPointViewIterator);
368+ bool hasNext = PDALHasNextPointView(gPointViewIterator);
369+ ASSERT(hasNext);
370+
371+ uint64_t actualSize = PDALGetAllPackedPoints(NULL, NULL, NULL);
372+ ASSERT_EQ(0, actualSize);
373+
374+ PDALPointViewPtr view = PDALGetNextPointView(gPointViewIterator);
375+ ASSERT(view);
376+
377+ actualSize = PDALGetAllPackedPoints(view, NULL, NULL);
378+ ASSERT_EQ(0, actualSize);
379+
380+ PDALPointLayoutPtr layout = PDALGetPointViewLayout(view);
381+ ASSERT(layout);
382+ PDALDimTypeListPtr dims = PDALGetPointLayoutDimTypes(layout);
383+ ASSERT(dims);
384+
385+ actualSize = PDALGetAllPackedPoints(NULL, dims, NULL);
386+ ASSERT_EQ(0, actualSize);
387+ actualSize = PDALGetAllPackedPoints(view, dims, NULL);
388+ ASSERT_EQ(0, actualSize);
389+
390+ uint64_t numPoints = PDALGetPointViewSize(view);
391+ size_t pointSize = PDALGetPointSize(layout);
392+ ASSERT(numPoints > 0);
393+ ASSERT(pointSize > 0);
394+
395+ char *actualPoints = calloc(numPoints, pointSize);
396+ ASSERT(actualPoints);
397+
398+ actualSize = PDALGetAllPackedPoints(NULL, NULL, actualPoints);
399+ ASSERT_EQ(0, actualSize);
400+ actualSize = PDALGetAllPackedPoints(view, NULL, actualPoints);
401+ ASSERT_EQ(0, actualSize);
402+ actualSize = PDALGetAllPackedPoints(NULL, dims, actualPoints);
403+ ASSERT_EQ(0, actualSize);
404+ actualSize = PDALGetAllPackedPoints(view, dims, actualPoints);
405+ ASSERT_EQ(numPoints * pointSize, actualSize);
406+
407+ char *expectedPoint = calloc(1, pointSize);
408+ ASSERT(expectedPoint);
409+
410+ for (uint64_t i = 0; i < numPoints; ++i)
411+ {
412+ ASSERT_EQ(pointSize, PDALGetPackedPoint(view, dims, i, expectedPoint));
413+ ASSERT_MEM_EQ(expectedPoint, actualPoints + i * pointSize, pointSize);
414+ }
415+
416+ free(expectedPoint);
417+ free(actualPoints);
418+ PDALDisposePointView(view);
419+
420+ PASS();
421+ }
422+
366423GREATEST_SUITE(PointViewTest)
367424{
368425 SET_SETUP(setupPointViewTest, NULL);
@@ -376,6 +433,7 @@ GREATEST_SUITE(PointViewTest)
376433 RUN_TEST(testPDALGetPointViewWkt);
377434 RUN_TEST(testPDALGetPointViewLayout);
378435 RUN_TEST(testPDALGetPackedPoint);
436+ RUN_TEST(testPDALGetAllPackedPoints);
379437
380438 SET_SETUP(NULL, NULL);
381439 SET_TEARDOWN(NULL, NULL);
0 commit comments