public static List<ValueMetaInterface> getValueMetaPluginClasses() throws KettlePluginException {

    List<ValueMetaInterface> list = new ArrayList<ValueMetaInterface>();

    List<PluginInterface> plugins = pluginRegistry.getPlugins( ValueMetaPluginType.class );
    for ( PluginInterface plugin : plugins ) {
      ValueMetaInterface valueMetaInterface = (ValueMetaInterface) pluginRegistry.loadClass( plugin );
      list.add( valueMetaInterface );
    }

    return list;
  }
@Test
  public void testGetValueMetaPluginClasses() throws KettlePluginException {
    List<ValueMetaInterface> dataTypes = ValueMetaFactory.getValueMetaPluginClasses();

    boolean numberExists = false;
    boolean stringExists = false;
    boolean dateExists = false;
    boolean booleanExists = false;
    boolean integerExists = false;
    boolean bignumberExists = false;
    boolean serializableExists = false;
    boolean binaryExists = false;
    boolean timestampExists = false;
    boolean inetExists = false;

    for ( ValueMetaInterface obj : dataTypes ) {
      if ( obj instanceof ValueMetaNumber ) {
        numberExists = true;
      }
      if ( obj.getClass().equals( ValueMetaString.class ) ) {
        stringExists = true;
      }
      if ( obj.getClass().equals( ValueMetaDate.class ) ) {
        dateExists = true;
      }
      if ( obj.getClass().equals( ValueMetaBoolean.class ) ) {
        booleanExists = true;
      }
      if ( obj.getClass().equals( ValueMetaInteger.class ) ) {
        integerExists = true;
      }
      if ( obj.getClass().equals( ValueMetaBigNumber.class ) ) {
        bignumberExists = true;
      }
      if ( obj.getClass().equals( ValueMetaSerializable.class ) ) {
        serializableExists = true;
      }
      if ( obj.getClass().equals( ValueMetaBinary.class ) ) {
        binaryExists = true;
      }
      if ( obj.getClass().equals( ValueMetaTimestamp.class ) ) {
        timestampExists = true;
      }
      if ( obj.getClass().equals( ValueMetaInternetAddress.class ) ) {
        inetExists = true;
      }
    }

    assertTrue( numberExists );
    assertTrue( stringExists );
    assertTrue( dateExists );
    assertTrue( booleanExists );
    assertTrue( integerExists );
    assertTrue( bignumberExists );
    assertTrue( serializableExists );
    assertTrue( binaryExists );
    assertTrue( timestampExists );
    assertTrue( inetExists );
  }