120 lines
6.5 KiB
YAML
120 lines
6.5 KiB
YAML
desc: Test intersects and includes semantics
|
|
tests:
|
|
# Intersects
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.point(1.5,1.5))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.point(2.5,2.5))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).intersects(r.point(1.5,1.5))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).intersects(r.point(1.05,1.05))
|
|
ot: true
|
|
# Our current semantics: we define polygons as closed, so points that are exactly *on* the outline of a polygon do intersect
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.point(2,2))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.point(2,1.5))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.line([1.5,1.5], [2,2]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.line([1.5,1.5], [2,1.5]))
|
|
ot: true
|
|
# (...with holes in the polygon being closed with respect to the polygon, i.e. the set cut out is open)
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).intersects(r.point(1.1,1.1))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).intersects(r.point(1.5,1.1))
|
|
ot: true
|
|
# ... lines are interpreted as closed sets as well, so even if they meet only at their end points, we consider them as intersecting.
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.line([2,2], [3,3]))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.line([2,1.5], [3,3]))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.line([1.5,1.5], [3,3]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.polygon([1.2,1.2], [1.8,1.2], [1.8,1.8], [1.2,1.8]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.polygon([1.5,1.5], [2.5,1.5], [2.5,2.5], [1.5,2.5]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).intersects(r.polygon([1.2,1.2], [1.8,1.2], [1.8,1.8], [1.2,1.8]))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).intersects(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9]))
|
|
ot: false
|
|
# Polygons behave like lines in that respect
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.polygon([2,1.1], [3,1.1], [3,1.9], [2,1.9]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).intersects(r.polygon([2,2], [3,2], [3,3], [2,3]))
|
|
ot: false
|
|
- cd: r.point(1,1).intersects(r.point(1.5,1.5))
|
|
ot: false
|
|
- cd: r.point(1,1).intersects(r.point(1,1))
|
|
ot: true
|
|
- cd: r.line([1,1], [2,1]).intersects(r.point(1,1))
|
|
ot: true
|
|
# This one currently fails due to numeric precision problems.
|
|
#- cd: r.line([1,0], [2,0]).intersects(r.point(1.5,0))
|
|
# ot: true
|
|
- cd: r.line([1,1], [1,2]).intersects(r.point(1,1.8))
|
|
ot: true
|
|
- cd: r.line([1,0], [2,0]).intersects(r.point(1.8,0))
|
|
ot: true
|
|
- cd: r.line([1,1], [2,1]).intersects(r.point(1.5,1.5))
|
|
ot: false
|
|
- cd: r.line([1,1], [2,1]).intersects(r.line([2,1], [3,1]))
|
|
ot: true
|
|
# intersects on an array/stream
|
|
- cd: r.expr([r.point(1, 0), r.point(3,0), r.point(2, 0)]).intersects(r.line([0,0], [2, 0])).count()
|
|
ot: 2
|
|
|
|
# Includes
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.point(1.5,1.5))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.point(2.5,2.5))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).includes(r.point(1.5,1.5))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).includes(r.point(1.05,1.05))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.point(2,2))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.point(2,1.5))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.line([1.5,1.5], [2,2]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.line([1.5,1.5], [2,1.5]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).includes(r.point(1.1,1.1))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).includes(r.point(1.5,1.1))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.line([2,2], [3,3]))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.line([2,1.5], [2,2]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.line([2,1], [2,2]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.line([1.5,1.5], [3,3]))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.polygon([1,1], [2,1], [2,2], [1,2]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.polygon([1.2,1.2], [1.8,1.2], [1.8,1.8], [1.2,1.8]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.polygon([1.5,1.5], [2,1.5], [2,2], [1.5,2]))
|
|
ot: true
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.polygon([1.5,1.5], [2.5,1.5], [2.5,2.5], [1.5,2.5]))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).includes(r.polygon([1.2,1.2], [1.8,1.2], [1.8,1.8], [1.2,1.8]))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).polygon_sub(r.polygon([1.1,1.1], [1.9,1.1], [1.9,1.9], [1.1,1.9])).includes(r.polygon([1.1,1.1], [2,1.1], [2,2], [1.1,2]))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.polygon([2,1.1], [3,1.1], [3,1.9], [2,1.9]))
|
|
ot: false
|
|
- cd: r.polygon([1,1], [2,1], [2,2], [1,2]).includes(r.polygon([2,2], [3,2], [3,3], [2,3]))
|
|
ot: false
|
|
# includes on an array/stream
|
|
- cd: r.expr([r.polygon([0,0], [1,1], [1,0]), r.polygon([0,1], [1,2], [1,1])]).includes(r.point(0,0)).count()
|
|
ot: 1
|
|
# Wrong geometry type arguments (the first one must be a polygon)
|
|
- cd: r.point(0,0).includes(r.point(0,0))
|
|
ot: err('ReqlQueryLogicError', 'Expected geometry of type `Polygon` but found `Point`.')
|
|
- cd: r.line([0,0], [0,1]).includes(r.point(0,0))
|
|
ot: err('ReqlQueryLogicError', 'Expected geometry of type `Polygon` but found `LineString`.')
|