/********************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.pentaho.di.core.row.value;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import org.junit.BeforeClass;
import org.junit.Test;
import org.pentaho.di.core.KettleClientEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.exception.KettlePluginException;
import org.pentaho.di.core.exception.KettleValueException;
import org.pentaho.di.core.row.ValueMetaInterface;
public class ValueMetaFactoryTest {
@BeforeClass
public static void beforeClassSetUp() throws KettleException {
KettleClientEnvironment.init();
}
@Test
public void testClone() throws KettleException {
ValueMetaInterface original = new ValueMetaString();
original.setCollatorLocale( Locale.CANADA );
original.setCollatorStrength( 3 );
ValueMetaInterface cloned = ValueMetaFactory.cloneValueMeta( original );
assertNotNull( cloned );
assertNotSame( original, cloned );
valueMetaDeepEquals( original, cloned );
}
private static void valueMetaDeepEquals( ValueMetaInterface expected, ValueMetaInterface actual ) {
if ( expected == null && actual == null ) {
return;
}
assertEquals( expected.getName(), actual.getName() );
assertEquals( expected.getType(), actual.getType() );
assertEquals( expected.getLength(), actual.getLength() );
assertEquals( expected.getPrecision(), actual.getPrecision() );
assertEquals( expected.getConversionMask(), actual.getConversionMask() );
assertEquals( expected.getDecimalSymbol(), actual.getDecimalSymbol() );
assertEquals( expected.getGroupingSymbol(), actual.getGroupingSymbol() );
assertEquals( expected.getStorageType(), actual.getStorageType() );
assertEquals( expected.getStringEncoding(), actual.getStringEncoding() );
assertEquals( expected.getTrimType(), actual.getTrimType() );
assertEquals( expected.isDateFormatLenient(), actual.isDateFormatLenient() );
assertEquals( expected.getDateFormatLocale(), actual.getDateFormatLocale() );
assertEquals( expected.getDateFormatTimeZone(), actual.getDateFormatTimeZone() );
assertEquals( expected.isLenientStringToNumber(), actual.isLenientStringToNumber() );
assertEquals( expected.isLargeTextField(), actual.isLargeTextField() );
assertEquals( expected.getComments(), actual.getComments() );
assertEquals( expected.isCaseInsensitive(), actual.isCaseInsensitive() );
assertEquals( expected.isCollatorDisabled(), actual.isCollatorDisabled() );
assertEquals( expected.getCollatorStrength(), actual.getCollatorStrength() );
assertArrayEquals( expected.getIndex(), actual.getIndex() );
assertEquals( expected.getOrigin(), actual.getOrigin() );
assertEquals( expected.isOriginalAutoIncrement(), actual.isOriginalAutoIncrement() );
assertEquals( expected.getOriginalColumnType(), actual.getOriginalColumnType() );
assertEquals( expected.getOriginalColumnTypeName(), actual.getOriginalColumnTypeName() );
assertEquals( expected.isOriginalNullable(), actual.isOriginalNullable() );
assertEquals( expected.getOriginalPrecision(), actual.getOriginalPrecision() );
assertEquals( expected.getOriginalScale(), actual.getOriginalScale() );
assertEquals( expected.isOriginalSigned(), actual.isOriginalSigned() );
valueMetaDeepEquals( expected.getStorageMetadata(), actual.getStorageMetadata() );
}
@Test
public void testCreateValueMeta() throws KettlePluginException {
ValueMetaInterface testObject;
try {
testObject = ValueMetaFactory.createValueMeta( Integer.MIN_VALUE );
fail();
} catch ( KettlePluginException expected ) {
// Do nothing, Integer.MIN_VALUE is not a valid option
}
try {
testObject = ValueMetaFactory.createValueMeta( null, Integer.MIN_VALUE );
fail();
} catch ( KettlePluginException expected ) {
// Do nothing, Integer.MIN_VALUE is not a valid option
}
try {
testObject = ValueMetaFactory.createValueMeta( null, Integer.MIN_VALUE, 10, 10 );
fail();
} catch ( KettlePluginException expected ) {
// Do nothing, Integer.MIN_VALUE is not a valid option
}
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_NONE );
assertTrue( testObject instanceof ValueMetaNone );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testNone", ValueMetaInterface.TYPE_NONE );
assertTrue( testObject instanceof ValueMetaNone );
assertEquals( "testNone", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testNone", ValueMetaInterface.TYPE_NONE, 10, 20 );
assertTrue( testObject instanceof ValueMetaNone );
assertEquals( "testNone", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( 20, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_NUMBER );
assertTrue( testObject instanceof ValueMetaNumber );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testNumber", ValueMetaInterface.TYPE_NUMBER );
assertTrue( testObject instanceof ValueMetaNumber );
assertEquals( "testNumber", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testNumber", ValueMetaInterface.TYPE_NUMBER, 10, 20 );
assertTrue( testObject instanceof ValueMetaNumber );
assertEquals( "testNumber", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( 20, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_STRING );
assertTrue( testObject instanceof ValueMetaString );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testString", ValueMetaInterface.TYPE_STRING );
assertTrue( testObject instanceof ValueMetaString );
assertEquals( "testString", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testString", ValueMetaInterface.TYPE_STRING, 1000, 50 );
assertTrue( testObject instanceof ValueMetaString );
assertEquals( "testString", testObject.getName() );
assertEquals( 1000, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() ); // Special case for String
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_DATE );
assertTrue( testObject instanceof ValueMetaDate );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testDate", ValueMetaInterface.TYPE_DATE );
assertTrue( testObject instanceof ValueMetaDate );
assertEquals( "testDate", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testDate", ValueMetaInterface.TYPE_DATE, 10, 20 );
assertTrue( testObject instanceof ValueMetaDate );
assertEquals( "testDate", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( 20, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_BOOLEAN );
assertTrue( testObject instanceof ValueMetaBoolean );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testBoolean", ValueMetaInterface.TYPE_BOOLEAN );
assertTrue( testObject instanceof ValueMetaBoolean );
assertEquals( "testBoolean", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testBoolean", ValueMetaInterface.TYPE_BOOLEAN, 10, 20 );
assertTrue( testObject instanceof ValueMetaBoolean );
assertEquals( "testBoolean", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_INTEGER );
assertTrue( testObject instanceof ValueMetaInteger );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( 0, testObject.getPrecision() ); // Special case for Integer
testObject = ValueMetaFactory.createValueMeta( "testInteger", ValueMetaInterface.TYPE_INTEGER );
assertTrue( testObject instanceof ValueMetaInteger );
assertEquals( "testInteger", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( 0, testObject.getPrecision() ); // Special case for Integer
testObject = ValueMetaFactory.createValueMeta( "testInteger", ValueMetaInterface.TYPE_INTEGER, 10, 20 );
assertTrue( testObject instanceof ValueMetaInteger );
assertEquals( "testInteger", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( 0, testObject.getPrecision() ); // Special case for Integer
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_BIGNUMBER );
assertTrue( testObject instanceof ValueMetaBigNumber );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testBigNumber", ValueMetaInterface.TYPE_BIGNUMBER );
assertTrue( testObject instanceof ValueMetaBigNumber );
assertEquals( "testBigNumber", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testBigNumber", ValueMetaInterface.TYPE_BIGNUMBER, 10, 20 );
assertTrue( testObject instanceof ValueMetaBigNumber );
assertEquals( "testBigNumber", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( 20, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_SERIALIZABLE );
assertTrue( testObject instanceof ValueMetaSerializable );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testSerializable", ValueMetaInterface.TYPE_SERIALIZABLE );
assertTrue( testObject instanceof ValueMetaSerializable );
assertEquals( "testSerializable", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testSerializable", ValueMetaInterface.TYPE_SERIALIZABLE, 10, 20 );
assertTrue( testObject instanceof ValueMetaSerializable );
assertEquals( "testSerializable", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( 20, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_BINARY );
assertTrue( testObject instanceof ValueMetaBinary );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( 0, testObject.getPrecision() ); // Special case for Binary
testObject = ValueMetaFactory.createValueMeta( "testBinary", ValueMetaInterface.TYPE_BINARY );
assertTrue( testObject instanceof ValueMetaBinary );
assertEquals( "testBinary", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( 0, testObject.getPrecision() ); // Special case for Binary
testObject = ValueMetaFactory.createValueMeta( "testBinary", ValueMetaInterface.TYPE_BINARY, 10, 20 );
assertTrue( testObject instanceof ValueMetaBinary );
assertEquals( "testBinary", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( 0, testObject.getPrecision() ); // Special case for Binary
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_TIMESTAMP );
assertTrue( testObject instanceof ValueMetaTimestamp );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testTimestamp", ValueMetaInterface.TYPE_TIMESTAMP );
assertTrue( testObject instanceof ValueMetaTimestamp );
assertEquals( "testTimestamp", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testTimestamp", ValueMetaInterface.TYPE_TIMESTAMP, 10, 20 );
assertTrue( testObject instanceof ValueMetaTimestamp );
assertEquals( "testTimestamp", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( 20, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( ValueMetaInterface.TYPE_INET );
assertTrue( testObject instanceof ValueMetaInternetAddress );
assertEquals( null, testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testInternetAddress", ValueMetaInterface.TYPE_INET );
assertTrue( testObject instanceof ValueMetaInternetAddress );
assertEquals( "testInternetAddress", testObject.getName() );
assertEquals( -1, testObject.getLength() );
assertEquals( -1, testObject.getPrecision() );
testObject = ValueMetaFactory.createValueMeta( "testInternetAddress", ValueMetaInterface.TYPE_INET, 10, 20 );
assertTrue( testObject instanceof ValueMetaInternetAddress );
assertEquals( "testInternetAddress", testObject.getName() );
assertEquals( 10, testObject.getLength() );
assertEquals( 20, testObject.getPrecision() );
}
@Test
public void testGetValueMetaNames() {
List<String> dataTypes = Arrays.<String>asList( ValueMetaFactory.getValueMetaNames() );
assertTrue( dataTypes.contains( "Number" ) );
assertTrue( dataTypes.contains( "String" ) );
assertTrue( dataTypes.contains( "Date" ) );
assertTrue( dataTypes.contains( "Boolean" ) );
assertTrue( dataTypes.contains( "Integer" ) );
assertTrue( dataTypes.contains( "BigNumber" ) );
assertFalse( dataTypes.contains( "Serializable" ) );
assertTrue( dataTypes.contains( "Binary" ) );
assertTrue( dataTypes.contains( "Timestamp" ) );
assertTrue( dataTypes.contains( "Internet Address" ) );
}
@Test
public void testGetAllValueMetaNames() {
List<String> dataTypes = Arrays.<String>asList( ValueMetaFactory.getAllValueMetaNames() );
assertTrue( dataTypes.contains( "Number" ) );
assertTrue( dataTypes.contains( "String" ) );
assertTrue( dataTypes.contains( "Date" ) );
assertTrue( dataTypes.contains( "Boolean" ) );
assertTrue( dataTypes.contains( "Integer" ) );
assertTrue( dataTypes.contains( "BigNumber" ) );
assertTrue( dataTypes.contains( "Serializable" ) );
assertTrue( dataTypes.contains( "Binary" ) );
assertTrue( dataTypes.contains( "Timestamp" ) );
assertTrue( dataTypes.contains( "Internet Address" ) );
}
@Test
public void testGetValueMetaName() {
assertEquals( "-", ValueMetaFactory.getValueMetaName( Integer.MIN_VALUE ) );
assertEquals( "None", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_NONE ) );
assertEquals( "Number", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_NUMBER ) );
assertEquals( "String", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_STRING ) );
assertEquals( "Date", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_DATE ) );
assertEquals( "Boolean", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_BOOLEAN ) );
assertEquals( "Integer", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_INTEGER ) );
assertEquals( "BigNumber", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_BIGNUMBER ) );
assertEquals( "Serializable", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_SERIALIZABLE ) );
assertEquals( "Binary", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_BINARY ) );
assertEquals( "Timestamp", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_TIMESTAMP ) );
assertEquals( "Internet Address", ValueMetaFactory.getValueMetaName( ValueMetaInterface.TYPE_INET ) );
}
@Test
public void testGetIdForValueMeta() {
assertEquals( ValueMetaInterface.TYPE_NONE, ValueMetaFactory.getIdForValueMeta( null ) );
assertEquals( ValueMetaInterface.TYPE_NONE, ValueMetaFactory.getIdForValueMeta( "" ) );
assertEquals( ValueMetaInterface.TYPE_NONE, ValueMetaFactory.getIdForValueMeta( "None" ) );
assertEquals( ValueMetaInterface.TYPE_NUMBER, ValueMetaFactory.getIdForValueMeta( "Number" ) );
assertEquals( ValueMetaInterface.TYPE_STRING, ValueMetaFactory.getIdForValueMeta( "String" ) );
assertEquals( ValueMetaInterface.TYPE_DATE, ValueMetaFactory.getIdForValueMeta( "Date" ) );
assertEquals( ValueMetaInterface.TYPE_BOOLEAN, ValueMetaFactory.getIdForValueMeta( "Boolean" ) );
assertEquals( ValueMetaInterface.TYPE_INTEGER, ValueMetaFactory.getIdForValueMeta( "Integer" ) );
assertEquals( ValueMetaInterface.TYPE_BIGNUMBER, ValueMetaFactory.getIdForValueMeta( "BigNumber" ) );
assertEquals( ValueMetaInterface.TYPE_SERIALIZABLE, ValueMetaFactory.getIdForValueMeta( "Serializable" ) );
assertEquals( ValueMetaInterface.TYPE_BINARY, ValueMetaFactory.getIdForValueMeta( "Binary" ) );
assertEquals( ValueMetaInterface.TYPE_TIMESTAMP, ValueMetaFactory.getIdForValueMeta( "Timestamp" ) );
assertEquals( ValueMetaInterface.TYPE_INET, ValueMetaFactory.getIdForValueMeta( "Internet Address" ) );
}
@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 );
}
@Test
public void testGuessValueMetaInterface() {
assertTrue( ValueMetaFactory.guessValueMetaInterface( new BigDecimal( 1.0 ) ) instanceof ValueMetaBigNumber );
assertTrue( ValueMetaFactory.guessValueMetaInterface( new Double( 1.0 ) ) instanceof ValueMetaNumber );
assertTrue( ValueMetaFactory.guessValueMetaInterface( new Long( 1 ) ) instanceof ValueMetaInteger );
assertTrue( ValueMetaFactory.guessValueMetaInterface( new String() ) instanceof ValueMetaString );
assertTrue( ValueMetaFactory.guessValueMetaInterface( new Date() ) instanceof ValueMetaDate );
assertTrue( ValueMetaFactory.guessValueMetaInterface( new Boolean( false ) ) instanceof ValueMetaBoolean );
assertTrue( ValueMetaFactory.guessValueMetaInterface( new Boolean( true ) ) instanceof ValueMetaBoolean );
assertTrue( ValueMetaFactory.guessValueMetaInterface( false ) instanceof ValueMetaBoolean );
assertTrue( ValueMetaFactory.guessValueMetaInterface( true ) instanceof ValueMetaBoolean );
assertTrue( ValueMetaFactory.guessValueMetaInterface( new byte[10] ) instanceof ValueMetaBinary );
// Test Unsupported Data Types
assertEquals( null, ValueMetaFactory.guessValueMetaInterface( null ) );
assertEquals( null, ValueMetaFactory.guessValueMetaInterface( new Short( (short) 1 ) ) );
assertEquals( null, ValueMetaFactory.guessValueMetaInterface( new Byte( (byte) 1 ) ) );
assertEquals( null, ValueMetaFactory.guessValueMetaInterface( new Float( 1.0 ) ) );
assertEquals( null, ValueMetaFactory.guessValueMetaInterface( new StringBuilder() ) );
assertEquals( null, ValueMetaFactory.guessValueMetaInterface( (byte) 1 ) );
}
@Test
public void testGetNativeDataTypeClass() throws KettlePluginException {
for ( String valueMetaName : ValueMetaFactory.getValueMetaNames() ) {
int valueMetaID = ValueMetaFactory.getIdForValueMeta( valueMetaName );
ValueMetaInterface valueMeta = ValueMetaFactory.createValueMeta( valueMetaID );
try {
Class<?> clazz = valueMeta.getNativeDataTypeClass();
assertNotNull( clazz );
} catch ( KettleValueException kve ) {
fail( valueMetaName + " should implement getNativeDataTypeClass()" );
}
}
}
}