<run>
  <desc>Test cases for PreparedGeometry predicates using GeometryCollections as test geometry.
        This tests the various combinations of target geometry and predicate which support
        GCs as the test geometry.
  </desc>
  <precisionModel type="FLOATING"/>
  <geometryOperation>org.locationtech.jtstest.geomop.PreparedGeometryOperation</geometryOperation>

<case>
  <desc>Box against GC
  </desc>
  <a>
  POLYGON ((0 0, 0 100, 200 100, 200 0, 0 0))     
  </a>
  <b>
    GEOMETRYCOLLECTION (POLYGON ((50 160, 110 60, 150 160, 50 160)), 
  LINESTRING (50 40, 170 120)) 
  </b>
<test>  <op name="intersects"   arg1="A" arg2="B">   true  </op> </test>
<test>  <op name="contains"     arg1="A" arg2="B">   false  </op> </test>
<test>  <op name="covers"       arg1="A" arg2="B">   false  </op> </test>
</case>

<case>
  <desc>Box against GC, with containment
  </desc>
  <a>
  POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0))     
  </a>
  <b>
    GEOMETRYCOLLECTION (POLYGON ((50 160, 110 60, 150 160, 50 160)), 
  LINESTRING (50 40, 170 120)) 
  </b>
<test>  <op name="intersects"   arg1="A" arg2="B">   true  </op> </test>
<test>  <op name="contains"     arg1="A" arg2="B">   true  </op> </test>
<test>  <op name="covers"       arg1="A" arg2="B">   true  </op> </test>
</case>

<case>
  <desc>Polygon-with-hole against GC
  </desc>
  <a>
  POLYGON ((0 0, 0 270, 200 270, 200 0, 0 0), 
  (30 210, 170 210, 60 20, 30 210))     
  </a>
  <b>
    GEOMETRYCOLLECTION (POLYGON ((50 160, 110 60, 150 160, 50 160)), 
  LINESTRING (50 40, 170 120)) 
  </b>
<test>  <op name="intersects"     arg1="A" arg2="B">   true  </op> </test>
<test>  <op name="contains"       arg1="A" arg2="B">   false  </op> </test>
</case>

<case>
  <desc>Linestring against GC
  </desc>
  <a>
  LINESTRING (20 90, 90 190, 170 50)    
  </a>
  <b>
    GEOMETRYCOLLECTION (POLYGON ((50 160, 110 60, 150 160, 50 160)), 
  LINESTRING (50 40, 170 120)) 
  </b>
<test>  <op name="intersects"     arg1="A" arg2="B">   true  </op> </test>
</case>

<case>
  <desc>Linestring against GC, with containment
  </desc>
  <a>
  LINESTRING (20 20, 100 100, 180 20) 
  </a>
  <b>
    GEOMETRYCOLLECTION (LINESTRING (40 40, 80 80),   POINT (120 80)) 
  </b>
<test>  <op name="intersects"     arg1="A" arg2="B">   true  </op> </test>
</case>

<case>
  <desc>LineString against GC, with point at endpoint
  </desc>
  <a>
  LINESTRING (0 0, 1 1)
  </a>
  <b>
    GEOMETRYCOLLECTION (POINT (1 1), LINESTRING (2 2, 3 3))
  </b>
<test>  <op name="intersects"     arg1="A" arg2="B">   true  </op> </test>
</case>


</run>
