<run>
  <desc>  Test type of empty results from overlay operations  </desc>


<case>
  <a> POINT EMPTY </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT EMPTY </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING EMPTY </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON EMPTY </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> POINT (1 1) </b>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POINT (1 1) </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> LINESTRING (5 5, 6 6) </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT EMPTY </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING EMPTY </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='union'         arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON EMPTY </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='difference'    arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOINT ((2 2), (3 3)) </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='difference'    arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> POINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> LINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> POLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> POINT (1 1) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> LINESTRING (5 5, 6 6) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> POLYGON ((20 20, 20 30, 30 30, 30 20, 20 20)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> MULTIPOINT EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> MULTILINESTRING EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> MULTIPOLYGON EMPTY </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> MULTIPOINT ((2 2), (3 3)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  POINT EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> MULTILINESTRING ((7 7, 8 8), (9 9, 10 10)) </b>
<test> <op name='intersection'  arg1='A' arg2='B'>  LINESTRING EMPTY   </op> </test>
</case>

<case>
  <a> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </a>
  <b> MULTIPOLYGON (((50 50, 50 60, 60 60, 60 50, 50 50)), ((70 70, 70 80, 80 80, 80 70, 70 70))) </b>
<test> <op name='difference'    arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
<test> <op name='symDifference' arg1='A' arg2='B'>  POLYGON EMPTY   </op> </test>
</case>

<case>
  <desc>PC - point and disjoint GC with empty elements</desc>
  <a>
POINT (1 1)
  </a>
  <b>
GEOMETRYCOLLECTION (POLYGON EMPTY, POINT EMPTY, LINESTRING (2 2, 3 3))
  </b>
<test>  <op name="intersection" arg1="A" arg2="B">
POINT EMPTY
  </op></test>
<test>  <op name="union" arg1="A" arg2="B">
GEOMETRYCOLLECTION (LINESTRING (2 2, 3 3), POINT (1 1))
  </op></test>
<test>  <op name="difference" arg1="A" arg2="B">
POINT (1 1)
  </op></test>
<test>  <op name="difference" arg1="B" arg2="A">
LINESTRING (2 2, 3 3)
  </op></test>
<test>  <op name="symdifference" arg1="A" arg2="B">
GEOMETRYCOLLECTION (LINESTRING (2 2, 3 3), POINT (1 1))
  </op></test>
</case>

<case>
  <desc>PC - point and disjoint GC with nested empty elements</desc>
  <a>
POINT (1 1)
  </a>
  <b>
GEOMETRYCOLLECTION (GEOMETRYCOLLECTION (POLYGON EMPTY, POINT EMPTY), GEOMETRYCOLLECTION(POLYGON EMPTY, LINESTRING (2 2, 3 3)))
  </b>
<test>  <op name="intersection" arg1="A" arg2="B">
POINT EMPTY
  </op></test>
<test>  <op name="union" arg1="A" arg2="B">
GEOMETRYCOLLECTION (LINESTRING (2 2, 3 3), POINT (1 1))
  </op></test>
<test>  <op name="difference" arg1="A" arg2="B">
POINT (1 1)
  </op></test>
<test>  <op name="difference" arg1="B" arg2="A">
LINESTRING (2 2, 3 3)
  </op></test>
<test>  <op name="symdifference" arg1="A" arg2="B">
GEOMETRYCOLLECTION (LINESTRING (2 2, 3 3), POINT (1 1))
  </op></test>
</case>

</run>

