]> granicus.if.org Git - postgis/commitdiff
Test for bbox calculations when there's an infinite coordinate.
authorPaul Ramsey <pramsey@cleverelephant.ca>
Thu, 8 Dec 2011 21:26:39 +0000 (21:26 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Thu, 8 Dec 2011 21:26:39 +0000 (21:26 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8326 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/cunit/cu_libgeom.c

index f7f02a50945f7c63e96548bc9e80fcd0d24eb717..48c9f26105da2b42795700d06d4759fe58ca8ec8 100644 (file)
@@ -168,6 +168,34 @@ static void test_gserialized_from_lwgeom_size(void)
 
 }
 
+static void test_lwgeom_calculate_gbox(void)
+{
+       LWGEOM *g;
+       GBOX b;
+
+       g = lwgeom_from_wkt("POINT(0 0)", LW_PARSER_CHECK_NONE);
+       lwgeom_calculate_gbox_cartesian(g, &b);
+       CU_ASSERT_DOUBLE_EQUAL(b.xmin, 0.0, 0.0000001);
+       lwgeom_free(g);
+       
+       /* Inf = 0x7FF0000000000000 */
+       /* POINT(0 0) = 00 00000001 0000000000000000 0000000000000000 */
+       /* POINT(0 Inf) = 00 00000001 0000000000000000 7FF0000000000000 */
+       g = lwgeom_from_hexwkb("000000000100000000000000007FF0000000000000", LW_PARSER_CHECK_NONE);
+       lwgeom_calculate_gbox_cartesian(g, &b);
+       CU_ASSERT_DOUBLE_EQUAL(b.xmin, 0.0, 0.0000001);
+       CU_ASSERT(isinf(b.ymax));
+       lwgeom_free(g);
+
+       /* LINESTRING(0 0, 0 Inf) = 00 00000002 00000002 0000000000000000 7FF0000000000000 0000000000000000 0000000000000000 */
+       g = lwgeom_from_hexwkb("00000000020000000200000000000000007FF000000000000000000000000000000000000000000000", LW_PARSER_CHECK_NONE);
+       lwgeom_calculate_gbox_cartesian(g, &b);
+       CU_ASSERT_DOUBLE_EQUAL(b.xmin, 0.0, 0.0000001);
+       CU_ASSERT(isinf(b.ymax));
+       lwgeom_free(g);
+       
+}
+
 static void test_gbox_serialized_size(void)
 {
        uint8_t flags = gflags(0, 0, 0);
@@ -657,6 +685,7 @@ CU_TestInfo libgeom_tests[] =
        PG_TEST(test_f2d),
        PG_TEST(test_lwgeom_clone),
        PG_TEST(test_lwgeom_force_clockwise),
+       PG_TEST(test_lwgeom_calculate_gbox),
        CU_TEST_INFO_NULL
 };
 CU_SuiteInfo libgeom_suite = {"libgeom",  NULL,  NULL, libgeom_tests};