package geospatial import ( "testing" "github.com/stretchr/testify/require" "gorm.io/driver/sqlite" "gorm.io/gorm" ) func TestPointExprAndArgs(t *testing.T) { db, _ := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{}) g := NewGeoHelper(db) expr := g.PointExpr() require.Contains(t, expr, "ST_SetSRID") args := g.PointArgs(1.23, 4.56) require.Equal(t, 2, len(args)) require.Equal(t, 1.23, args[0].(float64)) require.Equal(t, 4.56, args[1].(float64)) } func TestDWithinAndOrderExpr(t *testing.T) { db, _ := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{}) g := NewGeoHelper(db) dwithin := g.DWithinExpr("geometry_col") require.Contains(t, dwithin, "ST_DWithin") require.Contains(t, dwithin, "geometry_col::geography") order := g.OrderByDistanceExpr("geometry_col") require.Contains(t, order, "<->") require.Contains(t, order, "geometry_col") } func TestPointRadiusArgs(t *testing.T) { db, _ := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{}) g := NewGeoHelper(db) args := g.PointRadiusArgs(1.0, 2.0, 3.0, false) require.Equal(t, 3, len(args)) args2 := g.PointRadiusArgs(1.0, 2.0, 3.0, true) require.Equal(t, 5, len(args2)) }