PostGIS 3.0.6dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ test_lwpoly_construct_circle()

static void test_lwpoly_construct_circle ( void  )
static

Definition at line 1664 of file cu_algorithm.c.

1665{
1666 LWPOLY* p;
1667 const GBOX* g;
1668 const int32_t srid = 4326;
1669 const uint32_t segments_per_quad = 17;
1670 const int x = 10;
1671 const int y = 20;
1672 const int r = 5;
1673
1674 /* With normal arguments you should get something circle-y */
1675 p = lwpoly_construct_circle(srid, x, y, r, segments_per_quad, LW_TRUE);
1676
1677 ASSERT_INT_EQUAL(lwgeom_count_vertices(lwpoly_as_lwgeom(p)), segments_per_quad * 4 + 1);
1679
1681 CU_ASSERT_DOUBLE_EQUAL(g->xmin, x-r, 0.1);
1682 CU_ASSERT_DOUBLE_EQUAL(g->xmax, x+r, 0.1);
1683 CU_ASSERT_DOUBLE_EQUAL(g->ymin, y-r, 0.1);
1684 CU_ASSERT_DOUBLE_EQUAL(g->ymax, y+r, 0.1);
1685
1686 CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(lwpoly_as_lwgeom(p)), M_PI*5*5, 0.1);
1687
1688 lwpoly_free(p);
1689
1690 /* No segments? No circle. */
1691 p = lwpoly_construct_circle(srid, x, y, r, 0, LW_TRUE);
1692 CU_ASSERT_TRUE(p == NULL);
1693
1694 /* Negative radius? No circle. */
1695 p = lwpoly_construct_circle(srid, x, y, -1e-3, segments_per_quad, LW_TRUE);
1696 CU_ASSERT_TRUE(p == NULL);
1697
1698 /* Zero radius? Invalid circle */
1699 p = lwpoly_construct_circle(srid, x, y, 0, segments_per_quad, LW_TRUE);
1700 CU_ASSERT_TRUE(p != NULL);
1701 lwpoly_free(p);
1702}
char * r
Definition cu_in_wkt.c:24
#define ASSERT_INT_EQUAL(o, e)
int32_t lwgeom_get_srid(const LWGEOM *geom)
Return SRID number.
Definition lwgeom.c:909
LWPOLY * lwpoly_construct_circle(int32_t srid, double x, double y, double radius, uint32_t segments_per_quarter, char exterior)
Definition lwpoly.c:120
double lwgeom_area(const LWGEOM *geom)
Definition lwgeom.c:1863
uint32_t lwgeom_count_vertices(const LWGEOM *geom)
Count the total number of vertices in any LWGEOM.
Definition lwgeom.c:1229
void lwpoly_free(LWPOLY *poly)
Definition lwpoly.c:175
#define LW_TRUE
Return types for functions with status returns.
Definition liblwgeom.h:107
const GBOX * lwgeom_get_bbox(const LWGEOM *lwgeom)
Get a non-empty geometry bounding box, computing and caching it if not already there.
Definition lwgeom.c:725
LWGEOM * lwpoly_as_lwgeom(const LWPOLY *obj)
Definition lwgeom.c:311
double ymax
Definition liblwgeom.h:343
double xmax
Definition liblwgeom.h:341
double ymin
Definition liblwgeom.h:342
double xmin
Definition liblwgeom.h:340

References ASSERT_INT_EQUAL, LW_TRUE, lwgeom_area(), lwgeom_count_vertices(), lwgeom_get_bbox(), lwgeom_get_srid(), lwpoly_as_lwgeom(), lwpoly_construct_circle(), lwpoly_free(), r, GBOX::xmax, GBOX::xmin, GBOX::ymax, and GBOX::ymin.

Referenced by algorithms_suite_setup().

Here is the call graph for this function:
Here is the caller graph for this function: