@@ -262,6 +262,44 @@ class functionTestScala
262262 assertEquals(expected, actual)
263263 }
264264
265+ it(" Passed ST_Expand for Box2D" ) {
266+ val df = sparkSession.sql("""
267+ WITH t AS (
268+ SELECT ST_Box2D(ST_GeomFromText('POLYGON((1 2, 1 5, 4 5, 4 2, 1 2))')) AS bbox,
269+ ST_Box2D(ST_GeomFromText(NULL)) AS bbox_null
270+ )
271+ SELECT
272+ ST_Expand(bbox, 1.0) AS uniform,
273+ ST_Expand(bbox, 2.0, 0.5) AS per_axis,
274+ ST_Expand(bbox, -1.0) AS shrink,
275+ ST_Expand(bbox_null, 1.0) AS null_uniform,
276+ ST_Expand(bbox_null, 1.0, 1.0) AS null_per_axis
277+ FROM t
278+ """ )
279+ val row = df.collect()(0 )
280+
281+ val uniform = row.getAs[Box2D ](" uniform" )
282+ assert(uniform.getXMin == 0.0 )
283+ assert(uniform.getYMin == 1.0 )
284+ assert(uniform.getXMax == 5.0 )
285+ assert(uniform.getYMax == 6.0 )
286+
287+ val perAxis = row.getAs[Box2D ](" per_axis" )
288+ assert(perAxis.getXMin == - 1.0 )
289+ assert(perAxis.getYMin == 1.5 )
290+ assert(perAxis.getXMax == 6.0 )
291+ assert(perAxis.getYMax == 5.5 )
292+
293+ val shrink = row.getAs[Box2D ](" shrink" )
294+ assert(shrink.getXMin == 2.0 )
295+ assert(shrink.getYMin == 3.0 )
296+ assert(shrink.getXMax == 3.0 )
297+ assert(shrink.getYMax == 4.0 )
298+
299+ assert(row.isNullAt(3 ))
300+ assert(row.isNullAt(4 ))
301+ }
302+
265303 it(" Passed ST_YMax" ) {
266304 var test = sparkSession.sql(
267305 " SELECT ST_YMax(ST_GeomFromWKT('POLYGON ((-3 -3, 3 -3, 3 -2, -3 -1, -3 -3))'))" )
0 commit comments