@@ -33,6 +33,12 @@ def box_latlon(minx, miny, maxx, maxy):
3333 return shapely .geometry .box (minx , miny , maxx , maxy )
3434
3535
36+ def assert_gars_expected (field : GARSField , resolution , expected ):
37+ for _ in range (2 ):
38+ # repeat to ensure cached geometry is the same
39+ assert [str (gg ) for gg in getattr (field , f"gars_{ resolution } " )] == expected
40+
41+
3642MULTI_POLY = shapely .wkt .loads (
3743 "MULTIPOLYGON (((-179.9999999 -81.96439234540721, "
3844 "-179.4398378760588 -81.96439234540721, "
@@ -75,7 +81,7 @@ def box_latlon(minx, miny, maxx, maxy):
7581)
7682def test_gars_field__gars_60deg (geom_bounds , expected ):
7783 garsf = GARSField (geom_bounds )
78- assert [ str ( gg ) for gg in garsf . gars_60deg ] == expected
84+ assert_gars_expected ( garsf , "60deg" , expected )
7985
8086
8187@pytest .mark .parametrize (
@@ -87,7 +93,7 @@ def test_gars_field__gars_60deg(geom_bounds, expected):
8793)
8894def test_gars_field__gars_60deg_multipoly (multi_poly , expected ):
8995 garsf = GARSField (multi_poly )
90- assert [ str ( gg ) for gg in garsf . gars_60deg ] == expected
96+ assert_gars_expected ( garsf , "60deg" , expected )
9197
9298
9399@pytest .mark .parametrize (
@@ -111,7 +117,7 @@ def test_gars_field__gars_60deg_multipoly(multi_poly, expected):
111117)
112118def test_gars_field__gars_30deg (geom_bounds , expected ):
113119 garsf = GARSField (geom_bounds )
114- assert [ str ( gg ) for gg in garsf . gars_30deg ] == expected
120+ assert_gars_expected ( garsf , "30deg" , expected )
115121
116122
117123@pytest .mark .parametrize (
@@ -123,13 +129,15 @@ def test_gars_field__gars_30deg(geom_bounds, expected):
123129)
124130def test_gars_field__gars_30deg_multipoly (multi_poly , expected ):
125131 garsf = GARSField (multi_poly )
126- assert [ str ( gg ) for gg in garsf . gars_30deg ] == expected
132+ assert_gars_expected ( garsf , "30deg" , expected )
127133
128134
129135def test_gars_field_gars_30deg__check_all_4 ():
130136 gars5 = GARSField (GEDGARSGrid ("GD1A" ).polygon .buffer (- 0.0001 ))
131- assert len (gars5 .gars_60deg ) == 1
132- assert len (gars5 .gars_30deg ) == 4
137+ for _ in range (2 ):
138+ # repeat to ensure cached geometry is the same
139+ assert len (gars5 .gars_60deg ) == 1
140+ assert len (gars5 .gars_30deg ) == 4
133141
134142
135143@pytest .mark .parametrize (
@@ -153,7 +161,7 @@ def test_gars_field_gars_30deg__check_all_4():
153161)
154162def test_gars_field__gars_6deg (geom_bounds , expected ):
155163 garsf = GARSField (geom_bounds )
156- assert [ str ( gg ) for gg in garsf . gars_6deg ] == expected
164+ assert_gars_expected ( garsf , "6deg" , expected )
157165
158166
159167@pytest .mark .parametrize (
@@ -165,7 +173,7 @@ def test_gars_field__gars_6deg(geom_bounds, expected):
165173)
166174def test_gars_field__gars_6deg_multipoly (multi_poly , expected ):
167175 garsf = GARSField (multi_poly )
168- assert [ str ( gg ) for gg in garsf . gars_6deg ] == expected
176+ assert_gars_expected ( garsf , "6deg" , expected )
169177
170178
171179@pytest .mark .parametrize (
@@ -189,7 +197,7 @@ def test_gars_field__gars_6deg_multipoly(multi_poly, expected):
189197)
190198def test_gars_field__gars_3deg (geom_bounds , expected ):
191199 garsf = GARSField (geom_bounds )
192- assert [ str ( gg ) for gg in garsf . gars_3deg ] == expected
200+ assert_gars_expected ( garsf , "3deg" , expected )
193201
194202
195203@pytest .mark .parametrize (
@@ -201,7 +209,7 @@ def test_gars_field__gars_3deg(geom_bounds, expected):
201209)
202210def test_gars_field__gars_3deg_multipoly (multi_poly , expected ):
203211 garsf = GARSField (multi_poly )
204- assert [ str ( gg ) for gg in garsf . gars_3deg ] == expected
212+ assert_gars_expected ( garsf , "3deg" , expected )
205213
206214
207215@pytest .mark .parametrize (
@@ -253,7 +261,7 @@ def test_gars_field__gars_3deg_multipoly(multi_poly, expected):
253261)
254262def test_gars_field__gars_1deg (geom_bounds , expected ):
255263 garsf = GARSField (geom_bounds )
256- assert [ str ( gg ) for gg in garsf . gars_1deg ] == expected
264+ assert_gars_expected ( garsf , "1deg" , expected )
257265
258266
259267@pytest .mark .parametrize (
@@ -275,7 +283,7 @@ def test_gars_field__gars_1deg(geom_bounds, expected):
275283)
276284def test_gars_field__gars_1deg_multipoly (multi_poly , expected ):
277285 garsf = GARSField (multi_poly )
278- assert [ str ( gg ) for gg in garsf . gars_1deg ] == expected
286+ assert_gars_expected ( garsf , "1deg" , expected )
279287
280288
281289@pytest .mark .parametrize (
@@ -406,7 +414,7 @@ def test_gars_field__gars_1deg_multipoly(multi_poly, expected):
406414)
407415def test_gars_field__gars_30min (geom_bounds , expected ):
408416 garsf = GARSField (geom_bounds )
409- assert [ str ( gg ) for gg in garsf . gars_30min ] == expected
417+ assert_gars_expected ( garsf , "30min" , expected )
410418
411419
412420@pytest .mark .parametrize (
@@ -446,7 +454,7 @@ def test_gars_field__gars_30min(geom_bounds, expected):
446454)
447455def test_gars_field__gars_30min_multipoly (multi_poly , expected ):
448456 garsf = GARSField (multi_poly )
449- assert [ str ( gg ) for gg in garsf . gars_30min ] == expected
457+ assert_gars_expected ( garsf , "30min" , expected )
450458
451459
452460@pytest .mark .parametrize (
@@ -556,7 +564,7 @@ def test_gars_field__gars_30min_multipoly(multi_poly, expected):
556564)
557565def test_gars_field__gars_15min (geom_bounds , expected ):
558566 garsf = GARSField (geom_bounds )
559- assert [ str ( gg ) for gg in garsf . gars_15min ] == expected
567+ assert_gars_expected ( garsf , "15min" , expected )
560568
561569
562570@pytest .mark .parametrize (
@@ -618,7 +626,7 @@ def test_gars_field__gars_15min(geom_bounds, expected):
618626)
619627def test_gars_field__gars_15min_multipoly (multi_poly , expected ):
620628 garsf = GARSField (multi_poly )
621- assert [ str ( gg ) for gg in garsf . gars_15min ] == expected
629+ assert_gars_expected ( garsf , "15min" , expected )
622630
623631
624632@pytest .mark .parametrize (
@@ -737,7 +745,7 @@ def test_gars_field__gars_15min_multipoly(multi_poly, expected):
737745)
738746def test_gars_field__gars_5min (geom_bounds , expected ):
739747 garsf = GARSField (geom_bounds )
740- assert [ str ( gg ) for gg in garsf . gars_5min ] == expected
748+ assert_gars_expected ( garsf , "5min" , expected )
741749
742750
743751@pytest .mark .parametrize (
@@ -967,7 +975,7 @@ def test_gars_field__gars_5min(geom_bounds, expected):
967975)
968976def test_gars_field__gars_5min_multipoly (multi_poly , expected ):
969977 garsf = GARSField (multi_poly )
970- assert [ str ( gg ) for gg in garsf . gars_5min ] == expected
978+ assert_gars_expected ( garsf , "5min" , expected )
971979
972980
973981@pytest .mark .parametrize (
@@ -985,13 +993,15 @@ def test_gars_field__gars_5min_multipoly(multi_poly, expected):
985993)
986994def test_gars_field__gars_1min (geom_bounds , expected ):
987995 garsf = GARSField (geom_bounds )
988- assert [ str ( gg ) for gg in garsf . gars_1min ] == expected
996+ assert_gars_expected ( garsf , "1min" , expected )
989997
990998
991999def test_gars_field_gars_1min__check_all_25 ():
9921000 gars5 = GARSField (GARSGrid ("173MA47" ).polygon .buffer (- 0.0001 ))
993- assert len (gars5 .gars_5min ) == 1
994- assert len (gars5 .gars_1min ) == 25
1001+ for _ in range (2 ):
1002+ # repeat to check cache is the same
1003+ assert len (gars5 .gars_5min ) == 1
1004+ assert len (gars5 .gars_1min ) == 25
9951005
9961006
9971007@pytest .mark .parametrize (
@@ -1000,7 +1010,7 @@ def test_gars_field_gars_1min__check_all_25():
10001010)
10011011def test_gars_field__gars_1min_multipoly (multi_poly ):
10021012 garsf = GARSField (multi_poly .buffer (- 0.28 ))
1003- assert [ str ( gg ) for gg in garsf . gars_1min ] = = [
1013+ expected = [
10041014 "001AQ2102" ,
10051015 "001AQ2107" ,
10061016 "001AQ2112" ,
@@ -1034,17 +1044,20 @@ def test_gars_field__gars_1min_multipoly(multi_poly):
10341044 "001AR4717" ,
10351045 "001AR4722" ,
10361046 ]
1047+ assert_gars_expected (garsf , "1min" , expected )
10371048
10381049
10391050def test_gars_1min_exists_for_point ():
10401051 story = shapely .geometry .Point (- 93.729739032219 , 42.01131578 )
10411052 garsf = GARSField (story )
1042- assert len (garsf .gars_1min ) == 1
1043- assert str (garsf .gars_1min [0 ]) == "173MA4722"
1044- assert str (garsf .gars_1min [0 ].polygon ) == (
1045- "POLYGON ((-93.71666666666667 42,"
1046- " -93.71666666666667 42.01666666666667,"
1047- " -93.73333333333333 42.01666666666667,"
1048- " -93.73333333333333 42,"
1049- " -93.71666666666667 42))"
1050- )
1053+ for _ in range (2 ):
1054+ # repeat to check cache is the same
1055+ assert len (garsf .gars_1min ) == 1
1056+ assert str (garsf .gars_1min [0 ]) == "173MA4722"
1057+ assert str (garsf .gars_1min [0 ].polygon ) == (
1058+ "POLYGON ((-93.71666666666667 42,"
1059+ " -93.71666666666667 42.01666666666667,"
1060+ " -93.73333333333333 42.01666666666667,"
1061+ " -93.73333333333333 42,"
1062+ " -93.71666666666667 42))"
1063+ )
0 commit comments