| 26 | namespace parquet::geospatial { |
| 27 | |
| 28 | TEST(TestGeometryUtil, TestBoundingBox) { |
| 29 | BoundingBox box; |
| 30 | EXPECT_EQ(box, BoundingBox({kInf, kInf, kInf, kInf}, {-kInf, -kInf, -kInf, -kInf})); |
| 31 | EXPECT_EQ(box.ToString(), |
| 32 | "BoundingBox\n x: [inf, -inf]\n y: [inf, -inf]\n z: [inf, -inf]\n m: " |
| 33 | "[inf, -inf]\n"); |
| 34 | |
| 35 | BoundingBox box_xyzm({-1, -2, -3, -4}, {1, 2, 3, 4}); |
| 36 | BoundingBox box_xy({-10, -20, kInf, kInf}, {10, 20, -kInf, -kInf}); |
| 37 | BoundingBox box_xyz({kInf, kInf, -30, kInf}, {-kInf, -kInf, 30, -kInf}); |
| 38 | BoundingBox box_xym({kInf, kInf, kInf, -40}, {-kInf, -kInf, -kInf, 40}); |
| 39 | |
| 40 | box_xyzm.Merge(box_xy); |
| 41 | EXPECT_EQ(box_xyzm, BoundingBox({-10, -20, -3, -4}, {10, 20, 3, 4})); |
| 42 | EXPECT_EQ(box_xyzm.ToString(), |
| 43 | "BoundingBox\n x: [-10, 10]\n y: [-20, 20]\n z: [-3, 3]\n m: " |
| 44 | "[-4, 4]\n"); |
| 45 | |
| 46 | box_xyzm.Merge(box_xyz); |
| 47 | EXPECT_EQ(box_xyzm, BoundingBox({-10, -20, -30, -4}, {10, 20, 30, 4})); |
| 48 | |
| 49 | box_xyzm.Merge(box_xym); |
| 50 | EXPECT_EQ(box_xyzm, BoundingBox({-10, -20, -30, -40}, {10, 20, 30, 40})); |
| 51 | |
| 52 | double nan_dbl = std::numeric_limits<double>::quiet_NaN(); |
| 53 | BoundingBox box_nan({nan_dbl, nan_dbl, nan_dbl, nan_dbl}, |
| 54 | {nan_dbl, nan_dbl, nan_dbl, nan_dbl}); |
| 55 | box_xyzm.Merge(box_nan); |
| 56 | for (int i = 0; i < 4; i++) { |
| 57 | EXPECT_TRUE(std::isnan(box_xyzm.min[i])); |
| 58 | EXPECT_TRUE(std::isnan(box_xyzm.max[i])); |
| 59 | } |
| 60 | |
| 61 | box_xyzm.Reset(); |
| 62 | EXPECT_EQ(box_xyzm, BoundingBox()); |
| 63 | } |
| 64 | |
| 65 | TEST(TestGeometryUtil, TestBoundingBoxEquals) { |
| 66 | BoundingBox box_a({-1, -2, -3, -4}, {1, 2, 3, 4}); |
nothing calls this directly
no test coverage detected