@Test
public void testDefaultValid() {

    // no module --> x--------
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(NaN)[kts]");
    Shape shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Path2D);
    assertEquals(WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shp)).toString(),
            "MULTILINESTRING ((0 -0, 0 40), (5 45, -5 35), (-5 45, 5 35))");
    // 1 KNOTS --> calm
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(1)[kts]");
    shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Ellipse2D);
    assertEquals(((Ellipse2D) shp).getHeight(), ((Ellipse2D) shp).getWidth(), 1E-6); // circle
    // 2.99999999 KNOTS --> calm
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(2.999999999999)[kts]");
    shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Ellipse2D);
    assertEquals(((Ellipse2D) shp).getHeight(), ((Ellipse2D) shp).getWidth(), 1E-6); // circle
    // 3 KNOTS --> short barb
    // NORTH
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(3)[kts]");
    shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Path2D);
    String shpString = WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shp)).toString();
    assertEquals(WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shp)).toString(),
            "MULTILINESTRING ((0 -0, 0 40), (0 35, 10 36.25))");
    // SOUTH make sure the same shp is flipped on y axis
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(3)[kts]?emisphere=S");
    Shape shpS = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shpS);
    assertTrue(shpS instanceof Path2D);
    shpS = WindBarbsFactory.SOUTHERN_EMISPHERE_FLIP.createTransformedShape(shpS); // flip and check
    assertEquals(WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shpS)).toString(),
            shpString);
    // 5 KNOTS --> short barb
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(5)[kts]");
    shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Path2D);
    shpString = WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shp)).toString();
    assertEquals(shpString, "MULTILINESTRING ((0 -0, 0 40), (0 35, 10 36.25))");
    // SOUTH make sure the same shp is flipped on y axis
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(5)[kts]?hemisphere=S");
    shpS = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shpS);
    assertTrue(shpS instanceof Path2D);
    shpS = WindBarbsFactory.SOUTHERN_EMISPHERE_FLIP.createTransformedShape(shpS); // flip and check
    assertEquals(WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shpS)).toString(),
            shpString);
    // 100 KNOTS --> square
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(100)[kts]");
    shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Path2D);
    shpString = WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shp)).toString();
    assertEquals(shpString, "MULTILINESTRING ((0 -0, 0 40), (0 40, 10 40, 10 30, 0 30, 0 40))");
    // SOUTH make sure the same shp is flipped on y axis
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(100)[kts]?hemisphere=s");
    shpS = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shpS);
    assertTrue(shpS instanceof Path2D);
    shpS = WindBarbsFactory.SOUTHERN_EMISPHERE_FLIP.createTransformedShape(shpS); // flip and check
    assertEquals(WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shpS)).toString(),
            shpString);
    // 15 KNOTS --> square
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(15)[kts]");
    shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Path2D);
    assertEquals(WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shp)).toString(),
            "MULTILINESTRING ((0 -0, 0 40), (0 40, 20 42.5), (0 35, 10 36.25))");
    // 20 KNOTS --> square
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(20)[kts]");
    shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Path2D);
    assertEquals(WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shp)).toString(),
            "MULTILINESTRING ((0 -0, 0 40), (0 40, 20 42.5), (0 35, 20 37.5))");
    // 25 KNOTS --> square
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(25)[kts]");
    shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Path2D);
    assertEquals(WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shp)).toString(),
            "MULTILINESTRING ((0 -0, 0 40), (0 40, 20 42.5), (0 35, 20 37.5), (0 30, 10 31.25))");
    // 50 KNOTS --> pennat
    this.exp = ff.literal(WindBarbsFactory.WINDBARBS_PREFIX + "default(50)[kts]");
    shp = (Shape) wbf.getShape(null, this.exp, this.feature);
    assertNotNull(shp);
    assertTrue(shp instanceof Path2D);
    assertEquals(WindBarbsFactoryTest.WKT_WRITER.write(JTS.toGeometry(shp)).toString(),
            "MULTILINESTRING ((0 -0, 0 40), (0 40, 20 37, 0 34, 0 40))");
}