@Test
public void shouldParseNUMERIC() {

    printTest("shouldParseNUMERIC()");
    String typeString = getDataTypeString(DataTypes.DTYPE_NUMERIC);
    String content = typeString;
    DdlTokenStream tokens = getTokens(content);
    DataType dType = parser.parse(tokens);
    Assert.assertNotNull("DataType was NOT found for Type = " + typeString, dType);
    Assert.assertEquals("Wrong DataType found", typeString, dType.getName());
    content = typeString + " (5)";
    tokens = getTokens(content);
    dType = parser.parse(tokens);
    Assert.assertNotNull("DataType was NOT found for Type = " + typeString, dType);
    Assert.assertEquals("Wrong DataType found", typeString, dType.getName());
    Assert.assertEquals("DataType length is not correct", 5, dType.getPrecision()); // PRECISION
    content = typeString + " (5, 2)";
    tokens = getTokens(content);
    dType = parser.parse(tokens);
    Assert.assertNotNull("DataType was NOT found for Type = " + typeString, dType);
    Assert.assertEquals("Wrong DataType found", typeString, dType.getName());
    Assert.assertEquals("DataType length is not correct", 5, dType.getPrecision()); // PRECISION
    Assert.assertEquals("DataType length is not correct", 2, dType.getScale()); // SCALE
    // MISSING COMMA
    content = typeString + " (5  2)";
    tokens = getTokens(content);
    dType = null;
    try {
        dType = parser.parse(tokens);
    } catch (ParsingException e) {
        // Expect exception
    }
    Assert.assertNull("DataType should NOT have been found for Type = " + content, dType);
    // INVALID Scale Integer
    content = typeString + " (5  A)";
    tokens = getTokens(content);
    try {
        dType = parser.parse(tokens);
    } catch (ParsingException e) {
        // Expect exception
    }
    Assert.assertNull("DataType should NOT have been found for Type = " + content, dType);
}