MCPcopy Create free account
hub / github.com/OSGeo/PROJ / TEST_F

Function TEST_F

test/unit/test_c_api.cpp:193–258  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

191// ---------------------------------------------------------------------------
192
193TEST_F(CApi, proj_create) {
194 proj_destroy(nullptr);
195 EXPECT_EQ(proj_create(m_ctxt, "invalid"), nullptr);
196 {
197 auto obj =
198 proj_create(m_ctxt, GeographicCRS::EPSG_4326
199 ->exportToWKT(WKTFormatter::create().get())
200 .c_str());
201 ObjectKeeper keeper(obj);
202 EXPECT_NE(obj, nullptr);
203
204 // Check that functions that operate on 'non-C++' PJ don't crash
205 constexpr double DEG_TO_RAD = .017453292519943296;
206 PJ_COORD coord1;
207 coord1.xyzt.x = 2 * DEG_TO_RAD;
208 coord1.xyzt.y = 49 * DEG_TO_RAD;
209 coord1.xyzt.z = 0;
210 coord1.xyzt.t = 0;
211 PJ_COORD coord2;
212 coord2.xyzt.x = 2 * DEG_TO_RAD;
213 coord2.xyzt.y = 50 * DEG_TO_RAD;
214 coord2.xyzt.z = 0;
215 coord2.xyzt.t = 0;
216 EXPECT_EQ(proj_trans(obj, PJ_FWD, coord1).xyzt.x,
217 std::numeric_limits<double>::infinity());
218
219 // and those ones actually work just fine
220 PJ_XYZT geod = proj_geod(obj, coord1, coord2).xyzt;
221 EXPECT_NEAR(geod.x, 111219.409, 1e-3);
222 EXPECT_NEAR(geod.y, 0, 1e-3);
223
224 // also test that direct geodesic problem returns original results
225 PJ_XYZT coord3 = proj_geod_direct(obj, coord1, geod.y, geod.x).xyzt;
226 EXPECT_NEAR(coord3.x, coord2.xyzt.x, 1e-3);
227 EXPECT_NEAR(coord3.y, coord2.xyzt.y, 1e-3);
228
229 // Test distance
230 EXPECT_NEAR(proj_lp_dist(obj, coord1, coord2), 111219.409, 1e-3);
231
232 auto info = proj_pj_info(obj);
233 EXPECT_EQ(info.id, nullptr);
234 ASSERT_NE(info.description, nullptr);
235 EXPECT_EQ(info.description, std::string("WGS 84"));
236 ASSERT_NE(info.definition, nullptr);
237 EXPECT_EQ(info.definition, std::string(""));
238 }
239 {
240 auto obj = proj_create(m_ctxt, "EPSG:4326");
241 ObjectKeeper keeper(obj);
242 EXPECT_NE(obj, nullptr);
243 }
244
245 {
246 PJ_CONTEXT *ctxt = proj_context_create();
247 std::string s;
248 proj_log_func(ctxt, &s, [](void *user_data, int, const char *msg) {
249 *static_cast<std::string *>(user_data) = msg;
250 });

Callers

nothing calls this directly

Calls 15

proj_destroyFunction · 0.85
proj_createFunction · 0.85
proj_transFunction · 0.85
proj_geodFunction · 0.85
proj_geod_directFunction · 0.85
proj_lp_distFunction · 0.85
proj_pj_infoFunction · 0.85
proj_context_createFunction · 0.85
proj_log_funcFunction · 0.85
proj_context_destroyFunction · 0.85
proj_create_from_wktFunction · 0.85
proj_string_list_destroyFunction · 0.85

Tested by

no test coverage detected