<run>

<case>
  <desc>PP - point contained in both A and B</desc>
  <a>
    POINT(100 100)
  </a>
  <b>
    POINT(100 100)
  </b>
<test>
  <op name="intersection" arg1="A" arg2="B">
    POINT(100 100)
  </op>
</test>
</case>

<case>
  <desc>PP - A different from B</desc>
  <a>
    POINT(100 100)
  </a>
  <b>
    POINT(200 200)
  </b>
<test>
  <op name="intersection" arg1="A" arg2="B">
    POINT EMPTY
  </op>
</test>
<test>
  <op name="union" arg1="A" arg2="B">
    MULTIPOINT((100 100), (200 200))
  </op>
</test>
<test>
  <op name="difference" arg1="A" arg2="B">
    POINT(100 100)
  </op>
</test>
<test>
  <op name="symdifference" arg1="A" arg2="B">
    MULTIPOINT((100 100), (200 200))
  </op>
</test>
</case>

<case>
  <desc>PmP - point in A contained in B</desc>
  <a>
    POINT(100 100)
  </a>
  <b>
    MULTIPOINT((100 100), (200 200))
  </b>
<test>
  <op name="intersection" arg1="A" arg2="B">
    POINT(100 100)
  </op>
</test>
<test>
  <op name="union" arg1="A" arg2="B">
    MULTIPOINT((100 100), (200 200))
  </op>
</test>
<test>
  <op name="difference" arg1="A" arg2="B">
    POINT EMPTY
  </op>
</test>
<test>
  <op name="symdifference" arg1="A" arg2="B">
    POINT(200 200)
  </op>
</test>
</case>

<case>
  <desc>mPmP - points in A only, B only, and in both</desc>
  <a>
    MULTIPOINT((100 100), (200 200), (300 300), (500 500))
  </a>
  <b>
    MULTIPOINT((100 100), (200 200), (400 400), (600 600))
  </b>
<test>
  <op name="intersection" arg1="A" arg2="B">
    MULTIPOINT((100 100), (200 200))
  </op>
</test>
<test>
  <op name="union" arg1="A" arg2="B">
    MULTIPOINT ((100 100), (200 200), (300 300), (400 400), (500 500), (600 600))
  </op>
</test>
<test>
  <op name="difference" arg1="A" arg2="B">
    MULTIPOINT((300 300), (500 500))
  </op>
</test>
<test>
  <op name="symdifference" arg1="A" arg2="B">
    MULTIPOINT((300 300), (400 400), (500 500), (600 600))
  </op>
</test>
</case>

<case>
  <desc>PP - point contained in both A and B</desc>
  <a>
    POINT(80 200)
  </a>
  <b>
    POINT(80 200)
  </b>
<test>
  <op name="intersection" arg1="A" arg2="B">
    POINT(80 200)
  </op>
</test>
<test>
  <op name="union" arg1="A" arg2="B">
    POINT(80 200)
  </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>
  <desc>PP - A different from B</desc>
  <a>
    POINT(80 200)
  </a>
  <b>
    POINT(260 80)
  </b>
<test>
  <op name="intersection" arg1="A" arg2="B">
    POINT EMPTY
  </op>
</test>
<test>
  <op name="union" arg1="A" arg2="B">
    MULTIPOINT((80 200), (260 80))
  </op>
</test>
<test>
  <op name="difference" arg1="A" arg2="B">
    POINT(80 200)
  </op>
</test>
<test>
  <op name="symdifference" arg1="A" arg2="B">
    MULTIPOINT((80 200), (260 80))
  </op>
</test>
</case>

<case>
  <desc>PP - A different from B, same y</desc>
  <a>
    POINT(60 260)
  </a>
  <b>
    POINT(120 260)
  </b>
<test>
  <op name="intersection" arg1="A" arg2="B">
    POINT EMPTY
  </op>
</test>
<test>
  <op name="union" arg1="A" arg2="B">
    MULTIPOINT((60 260), (120 260))
  </op>
</test>
<test>
  <op name="difference" arg1="A" arg2="B">
    POINT(60 260)
  </op>
</test>
<test>
  <op name="symdifference" arg1="A" arg2="B">
    MULTIPOINT((60 260), (120 260))
  </op>
</test>
</case>

<case>
  <desc>PP - A different from B, same x</desc>
  <a>
    POINT(80 80)
  </a>
  <b>
    POINT(80 280)
  </b>
<test>
  <op name="intersection" arg1="A" arg2="B">
    POINT EMPTY
  </op>
</test>
<test>
  <op name="union" arg1="A" arg2="B">
    MULTIPOINT((80 80), (80 280))
  </op>
</test>
<test>
  <op name="difference" arg1="A" arg2="B">
    POINT(80 80)
  </op>
</test>
<test>
  <op name="symdifference" arg1="A" arg2="B">
    MULTIPOINT((80 80), (80 280))
  </op>
</test>
</case>

</run>
