@@ -522,6 +522,72 @@ TEST(gie, info_functions) {
522522 proj_destroy (P);
523523 }
524524
525+ // Test with a projected CRS with feet unit
526+ {
527+ PJ_COORD c;
528+ c.lp .lam = proj_torad (-110 );
529+ c.lp .phi = proj_torad (30 );
530+
531+ P = proj_create (PJ_DEFAULT_CTX,
532+ " +proj=tmerc +lat_0=31 +lon_0=-110.166666666667 "
533+ " +k=0.9999 +x_0=213360 +y_0=0 +ellps=GRS80 +units=ft" );
534+ factors = proj_factors (P, c);
535+ EXPECT_NEAR (factors.meridional_scale , 0.99990319 , 1e-8 )
536+ << factors.meridional_scale ;
537+ EXPECT_NEAR (factors.parallel_scale , 0.99990319 , 1e-8 )
538+ << factors.parallel_scale ;
539+ EXPECT_NEAR (factors.angular_distortion , 0 , 1e-7 )
540+ << factors.angular_distortion ;
541+ EXPECT_NEAR (factors.meridian_parallel_angle , M_PI_2, 1e-7 )
542+ << factors.meridian_parallel_angle ;
543+ proj_destroy (P);
544+
545+ P = proj_create (PJ_DEFAULT_CTX, " EPSG:2222" );
546+
547+ const auto factors2 = proj_factors (P, c);
548+
549+ EXPECT_NEAR (factors.meridional_scale , factors2.meridional_scale , 1e-10 );
550+ EXPECT_NEAR (factors.parallel_scale , factors2.parallel_scale , 1e-10 );
551+ EXPECT_NEAR (factors.angular_distortion , factors2.angular_distortion ,
552+ 1e-10 );
553+ EXPECT_NEAR (factors.meridian_parallel_angle ,
554+ factors2.meridian_parallel_angle , 1e-109 );
555+
556+ proj_destroy (P);
557+ }
558+
559+ // Test with a projected CRS with northing, easting axis order
560+ {
561+ PJ_COORD c;
562+ c.lp .lam = proj_torad (9 );
563+ c.lp .phi = proj_torad (0 );
564+
565+ P = proj_create (PJ_DEFAULT_CTX, " +proj=utm +zone=32 +ellps=GRS80" );
566+ factors = proj_factors (P, c);
567+ EXPECT_NEAR (factors.meridional_scale , 0.9996 , 1e-8 )
568+ << factors.meridional_scale ;
569+ EXPECT_NEAR (factors.parallel_scale , 0.9996 , 1e-8 )
570+ << factors.parallel_scale ;
571+ EXPECT_NEAR (factors.angular_distortion , 0 , 1e-7 )
572+ << factors.angular_distortion ;
573+ EXPECT_NEAR (factors.meridian_parallel_angle , M_PI_2, 1e-7 )
574+ << factors.meridian_parallel_angle ;
575+ proj_destroy (P);
576+
577+ P = proj_create (PJ_DEFAULT_CTX, " EPSG:3044" );
578+
579+ const auto factors2 = proj_factors (P, c);
580+
581+ EXPECT_NEAR (factors.meridional_scale , factors2.meridional_scale , 1e-10 );
582+ EXPECT_NEAR (factors.parallel_scale , factors2.parallel_scale , 1e-10 );
583+ EXPECT_NEAR (factors.angular_distortion , factors2.angular_distortion ,
584+ 1e-10 );
585+ EXPECT_NEAR (factors.meridian_parallel_angle ,
586+ factors2.meridian_parallel_angle , 1e-109 );
587+
588+ proj_destroy (P);
589+ }
590+
525591 // Test with a geographic CRS --> error
526592 {
527593 P = proj_create (PJ_DEFAULT_CTX, " EPSG:4326" );
0 commit comments