public void testDescribeBuffer() {
    NameImpl bufferName = new NameImpl("JTS", "buffer");
    InternationalString desc = factory.getDescription(bufferName);
    assertNotNull(desc);

    Map<String, Parameter<?>> params = factory.getParameterInfo(bufferName);
    assertEquals(4, params.size());

    Parameter<?> geom = params.get("geom");
    assertEquals(Geometry.class, geom.type);
    assertTrue(geom.required);

    Parameter<?> distance = params.get("distance");
    assertEquals(double.class, distance.type);
    assertTrue(distance.required);

    Parameter<?> quadrants = params.get("quadrantSegments");
    assertEquals(Integer.class, quadrants.type);
    assertFalse(quadrants.required);
    assertEquals(0, quadrants.minOccurs);
    assertEquals(1, quadrants.maxOccurs);

    Parameter<?> capStyle = params.get("capStyle");
    assertEquals(GeometryFunctions.BufferCapStyle.class, capStyle.type);
    assertFalse(capStyle.required);
    assertEquals(0, capStyle.minOccurs);
    assertEquals(1, capStyle.maxOccurs);
  }
  public void testDescribeUnion() {
    NameImpl unionName = new NameImpl("JTS", "union");
    InternationalString desc = factory.getDescription(unionName);
    assertNotNull(desc);

    Map<String, Parameter<?>> params = factory.getParameterInfo(unionName);
    assertEquals(1, params.size());

    Parameter<?> geom = params.get("geom");
    assertEquals(Geometry.class, geom.type);
    assertTrue(geom.required);
    assertEquals(2, geom.minOccurs);
    assertEquals(Integer.MAX_VALUE, geom.maxOccurs);
  }