@@ -1782,6 +1782,104 @@ end
17821782 @test r ≈ SimpleMesh (f .(vertices (d)), topology (d))
17831783end
17841784
1785+ @testitem " ValidCoords" setup = [Setup] begin
1786+ @test ! isaffine (ValidCoords (Mercator))
1787+ @test ! TB. isrevertible (ValidCoords (Mercator))
1788+ @test ! TB. isinvertible (ValidCoords (Mercator))
1789+ @test TB. parameters (ValidCoords (Mercator)) == (; CRS= Mercator)
1790+ @test TB. parameters (ValidCoords (EPSG{3395 })) == (; CRS= Mercator{WGS84Latest})
1791+ @test TB. parameters (ValidCoords (ESRI{54017 })) == (; CRS= Behrmann{WGS84Latest})
1792+ f = ValidCoords (Mercator)
1793+ @test sprint (show, f) == " ValidCoords(CRS: CoordRefSystems.Mercator)"
1794+ @test sprint (show, MIME " text/plain" (), f) == """
1795+ ValidCoords transform
1796+ └─ CRS: CoordRefSystems.Mercator"""
1797+
1798+ # ---------
1799+ # POINTSET
1800+ # ---------
1801+
1802+ f = ValidCoords (Mercator)
1803+ d = PointSet ([latlon (- 90 , 0 ), latlon (- 45 , 0 ), latlon (0 , 0 ), latlon (45 , 0 ), latlon (90 , 0 )])
1804+ r, c = TB. apply (f, d)
1805+ @test r == PointSet ([latlon (- 45 , 0 ), latlon (0 , 0 ), latlon (45 , 0 )])
1806+
1807+ # ------------
1808+ # GEOMETRYSET
1809+ # ------------
1810+
1811+ f = ValidCoords (Mercator)
1812+ t1 = Triangle (latlon (- 90 , 0 ), latlon (- 45 , 30 ), latlon (- 45 , - 30 ))
1813+ t2 = Triangle (latlon (- 45 , 0 ), latlon (0 , 30 ), latlon (0 , - 30 ))
1814+ t3 = Triangle (latlon (0 , - 30 ), latlon (0 , 30 ), latlon (45 , 0 ))
1815+ t4 = Triangle (latlon (45 , - 30 ), latlon (45 , 30 ), latlon (90 , 0 ))
1816+ d = GeometrySet ([t1, t2, t3, t4])
1817+ r, c = TB. apply (f, d)
1818+ @test r == GeometrySet ([t2, t3])
1819+
1820+ f = ValidCoords (Mercator)
1821+ t1 = Triangle (latlon (- 90 , 0 ), latlon (- 45 , 30 ), latlon (- 45 , - 30 ))
1822+ t2 = Triangle (latlon (- 45 , 0 ), latlon (0 , 30 ), latlon (0 , - 30 ))
1823+ t3 = Triangle (latlon (0 , - 30 ), latlon (0 , 30 ), latlon (45 , 0 ))
1824+ t4 = Triangle (latlon (45 , - 30 ), latlon (45 , 30 ), latlon (90 , 0 ))
1825+ m1 = Multi ([t1, t4])
1826+ m2 = Multi ([t2, t3])
1827+ d = GeometrySet ([m1, m2])
1828+ r, c = TB. apply (f, d)
1829+ @test r == GeometrySet ([m2])
1830+
1831+ f = ValidCoords (Mercator)
1832+ b1 = Box (latlon (- 90 , - 30 ), latlon (- 30 , 30 ))
1833+ b2 = Box (latlon (- 30 , - 30 ), latlon (30 , 30 ))
1834+ b3 = Box (latlon (30 , - 30 ), latlon (90 , 30 ))
1835+ d = GeometrySet ([b1, b2, b3])
1836+ r, c = TB. apply (f, d)
1837+ @test r == GeometrySet ([b2])
1838+
1839+ # --------------
1840+ # CARTESIANGRID
1841+ # --------------
1842+
1843+ f = ValidCoords (Mercator)
1844+ d = RegularGrid (latlon (- 90 , - 180 ), latlon (90 , 180 ), dims= (3 , 3 ))
1845+ r, c = TB. apply (f, d)
1846+ linds = LinearIndices (size (d))
1847+ @test r == view (d, [linds[2 , 1 ], linds[2 , 2 ], linds[2 , 3 ]])
1848+
1849+ # ----------------
1850+ # RECTILINEARGRID
1851+ # ----------------
1852+
1853+ f = ValidCoords (Mercator)
1854+ g = RegularGrid (latlon (- 90 , - 180 ), latlon (90 , 180 ), dims= (3 , 3 ))
1855+ d = convert (RectilinearGrid, g)
1856+ r, c = TB. apply (f, d)
1857+ linds = LinearIndices (size (d))
1858+ @test r == view (d, [linds[2 , 1 ], linds[2 , 2 ], linds[2 , 3 ]])
1859+
1860+ # ---------------
1861+ # STRUCTUREDGRID
1862+ # ---------------
1863+
1864+ f = ValidCoords (Mercator)
1865+ g = RegularGrid (latlon (- 90 , - 180 ), latlon (90 , 180 ), dims= (3 , 3 ))
1866+ d = convert (StructuredGrid, g)
1867+ r, c = TB. apply (f, d)
1868+ linds = LinearIndices (size (d))
1869+ @test r == view (d, [linds[2 , 1 ], linds[2 , 2 ], linds[2 , 3 ]])
1870+
1871+ # -----------
1872+ # SIMPLEMESH
1873+ # -----------
1874+
1875+ f = ValidCoords (Mercator)
1876+ g = RegularGrid (latlon (- 90 , - 180 ), latlon (90 , 180 ), dims= (3 , 3 ))
1877+ d = convert (SimpleMesh, g)
1878+ r, c = TB. apply (f, d)
1879+ linds = LinearIndices (size (d))
1880+ @test r == view (d, [linds[2 , 1 ], linds[2 , 2 ], linds[2 , 3 ]])
1881+ end
1882+
17851883@testitem " Shadow" setup = [Setup] begin
17861884 @test ! isaffine (Shadow (:xy ))
17871885 @test ! TB. isrevertible (Shadow (" xy" ))
0 commit comments