/*! ******************************************************************************
*
* 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 java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.pentaho.di.core.exception.KettleValueException;
import org.pentaho.di.core.row.ValueMetaInterface;
import junit.framework.Assert;
import static org.junit.Assert.assertEquals;
public class ValueMetaStringTest {
private static final String BASE_VALUE = "Some text";
private static final String TEST_VALUE = "Some text";
private ConfigurableMeta meta;
@Before
public void setUp() {
meta = new ConfigurableMeta( BASE_VALUE );
}
@After
public void tearDown() {
meta = null;
}
@Test
public void testGetNativeData_emptyIsNotNull() throws Exception {
meta.setNullsAndEmptyAreDifferent( true );
assertEquals( BASE_VALUE, meta.getNativeDataType( BASE_VALUE ) );
assertEquals( TEST_VALUE, meta.getNativeDataType( TEST_VALUE ) );
assertEquals( null, meta.getNativeDataType( null ) );
assertEquals( "1", meta.getNativeDataType( 1 ) );
assertEquals( "1.0", meta.getNativeDataType( 1.0 ) );
Date d = ( new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.SSS" ) ).parse( "2012-11-10 09:08:07.654" );
assertEquals( d.toString(), meta.getNativeDataType( d ) );
Timestamp ts = Timestamp.valueOf( "2012-11-10 09:08:07.654321" );
assertEquals( "2012-11-10 09:08:07.654321", meta.getNativeDataType( ts ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_NONE );
assertEquals( "", meta.getNativeDataType( "" ) );
assertEquals( "1", meta.getNativeDataType( "1" ) );
assertEquals( " ", meta.getNativeDataType( " " ) );
assertEquals( " 1 ", meta.getNativeDataType( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_LEFT );
assertEquals( "", meta.getNativeDataType( "" ) );
assertEquals( "1", meta.getNativeDataType( "1" ) );
assertEquals( "", meta.getNativeDataType( " " ) );
assertEquals( "1 ", meta.getNativeDataType( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_RIGHT );
assertEquals( "", meta.getNativeDataType( "" ) );
assertEquals( "1", meta.getNativeDataType( "1" ) );
assertEquals( "", meta.getNativeDataType( " " ) );
assertEquals( " 1", meta.getNativeDataType( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_BOTH );
assertEquals( "", meta.getNativeDataType( "" ) );
assertEquals( "1", meta.getNativeDataType( "1" ) );
assertEquals( "", meta.getNativeDataType( " " ) );
assertEquals( "1", meta.getNativeDataType( " 1 " ) );
}
@Test
public void testGetNativeData_emptyIsNull() throws Exception {
meta.setNullsAndEmptyAreDifferent( false );
assertEquals( BASE_VALUE, meta.getNativeDataType( BASE_VALUE ) );
assertEquals( TEST_VALUE, meta.getNativeDataType( TEST_VALUE ) );
assertEquals( null, meta.getNativeDataType( null ) );
assertEquals( "1", meta.getNativeDataType( 1 ) );
assertEquals( "1.0", meta.getNativeDataType( 1.0 ) );
Date d = ( new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss.SSS" ) ).parse( "2012-11-10 09:08:07.654" );
assertEquals( d.toString(), meta.getNativeDataType( d ) );
Timestamp ts = Timestamp.valueOf( "2012-11-10 09:08:07.654321" );
assertEquals( "2012-11-10 09:08:07.654321", meta.getNativeDataType( ts ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_NONE );
// assertEquals( null, meta.getNativeDataType( "" ) ); //TODO: is it correct?
assertEquals( "", meta.getNativeDataType( "" ) ); // TODO: is it correct?
assertEquals( "1", meta.getNativeDataType( "1" ) );
assertEquals( " ", meta.getNativeDataType( " " ) );
assertEquals( " 1 ", meta.getNativeDataType( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_LEFT );
// assertEquals( null, meta.getNativeDataType( "" ) ); //TODO: is it correct?
assertEquals( "", meta.getNativeDataType( "" ) ); // TODO: is it correct?
assertEquals( "1", meta.getNativeDataType( "1" ) );
// assertEquals( null, meta.getNativeDataType( " " ) ); //TODO: is it correct?
assertEquals( "", meta.getNativeDataType( " " ) ); // TODO: is it correct?
assertEquals( "1 ", meta.getNativeDataType( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_RIGHT );
// assertEquals( null, meta.getNativeDataType( "" ) ); //TODO: is it correct?
assertEquals( "", meta.getNativeDataType( "" ) ); // TODO: is it correct?
assertEquals( "1", meta.getNativeDataType( "1" ) );
// assertEquals( null, meta.getNativeDataType( " " ) ); //TODO: is it correct?
assertEquals( "", meta.getNativeDataType( " " ) ); // TODO: is it correct?
assertEquals( " 1", meta.getNativeDataType( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_BOTH );
// assertEquals( null, meta.getNativeDataType( "" ) ); //TODO: is it correct?
assertEquals( "", meta.getNativeDataType( "" ) ); // TODO: is it correct?
assertEquals( "1", meta.getNativeDataType( "1" ) );
// assertEquals( null, meta.getNativeDataType( " " ) ); //TODO: is it correct?
assertEquals( "", meta.getNativeDataType( " " ) ); // TODO: is it correct?
assertEquals( "1", meta.getNativeDataType( " 1 " ) );
}
@Test
public void testIsNull_emptyIsNotNull() throws KettleValueException {
meta.setNullsAndEmptyAreDifferent( true );
assertEquals( true, meta.isNull( null ) );
assertEquals( false, meta.isNull( "" ) );
assertEquals( false, meta.isNull( "1" ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_NONE );
assertEquals( false, meta.isNull( " " ) );
assertEquals( false, meta.isNull( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_LEFT );
assertEquals( false, meta.isNull( " " ) );
assertEquals( false, meta.isNull( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_RIGHT );
assertEquals( false, meta.isNull( " " ) );
assertEquals( false, meta.isNull( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_BOTH );
assertEquals( false, meta.isNull( " " ) );
assertEquals( false, meta.isNull( " 1 " ) );
}
@Test
public void testIsNull_emptyIsNull() throws KettleValueException {
meta.setNullsAndEmptyAreDifferent( false );
assertEquals( true, meta.isNull( null ) );
assertEquals( true, meta.isNull( "" ) );
assertEquals( false, meta.isNull( "1" ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_NONE );
assertEquals( false, meta.isNull( " " ) );
assertEquals( false, meta.isNull( meta.getString( " " ) ) );
assertEquals( false, meta.isNull( " 1 " ) );
assertEquals( false, meta.isNull( meta.getString( " 1 " ) ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_LEFT );
// assertEquals( true, meta.isNull( " " ) ); //TODO: is it correct?
assertEquals( false, meta.isNull( " " ) ); // TODO: is it correct?
assertEquals( true, meta.isNull( meta.getString( " " ) ) );
assertEquals( false, meta.isNull( " 1 " ) );
assertEquals( false, meta.isNull( meta.getString( " 1 " ) ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_RIGHT );
// assertEquals( true, meta.isNull( " " ) ); //TODO: is it correct?
assertEquals( false, meta.isNull( " " ) ); // TODO: is it correct?
assertEquals( true, meta.isNull( meta.getString( " " ) ) );
assertEquals( false, meta.isNull( " 1 " ) );
assertEquals( false, meta.isNull( meta.getString( " 1 " ) ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_BOTH );
// assertEquals( true, meta.isNull( " " ) ); //TODO: is it correct?
assertEquals( false, meta.isNull( " " ) ); // TODO: is it correct?
assertEquals( true, meta.isNull( meta.getString( " " ) ) );
assertEquals( false, meta.isNull( " 1 " ) );
assertEquals( false, meta.isNull( meta.getString( " 1 " ) ) );
}
@Test
public void testGetString_emptyIsNotNull() throws KettleValueException {
meta.setNullsAndEmptyAreDifferent( true );
assertEquals( null, meta.getString( null ) );
assertEquals( "", meta.getString( "" ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_NONE );
assertEquals( " ", meta.getString( " " ) );
assertEquals( " 1 ", meta.getString( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_LEFT );
assertEquals( "", meta.getString( " " ) );
assertEquals( "1 ", meta.getString( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_RIGHT );
assertEquals( "", meta.getString( " " ) );
assertEquals( " 1", meta.getString( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_BOTH );
assertEquals( "", meta.getString( " " ) );
assertEquals( "1", meta.getString( " 1 " ) );
}
@Test
public void testGetString_emptyIsNull() throws KettleValueException {
meta.setNullsAndEmptyAreDifferent( false );
assertEquals( null, meta.getString( null ) );
//assertEquals( null, meta.getString( "" ) ); // TODO: is it correct?
assertEquals( "", meta.getString( "" ) ); // TODO: is it correct?
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_NONE );
assertEquals( " ", meta.getString( " " ) );
assertEquals( " 1 ", meta.getString( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_LEFT );
// assertEquals( null, meta.getString( " " ) ); // TODO: is it correct?
assertEquals( "", meta.getString( " " ) ); // TODO: is it correct?
assertEquals( "1 ", meta.getString( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_RIGHT );
// assertEquals( null, meta.getString( " " ) ); // TODO: is it correct?
assertEquals( "", meta.getString( " " ) ); // TODO: is it correct?
assertEquals( " 1", meta.getString( " 1 " ) );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_BOTH );
// assertEquals( null, meta.getString( " " ) ); // TODO: is it correct?
assertEquals( "", meta.getString( " " ) ); // TODO: is it correct?
assertEquals( "1", meta.getString( " 1 " ) );
}
@Test
public void testCompare_emptyIsNotNull() throws KettleValueException {
meta.setNullsAndEmptyAreDifferent( true );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_NONE );
assertSignum( 0, meta.compare( null, null ) ); // null == null
assertSignum( -1, meta.compare( null, "" ) ); // null < ""
assertSignum( -1, meta.compare( null, " " ) ); // null < " "
assertSignum( -1, meta.compare( null, " 1" ) ); // null < " 1"
assertSignum( -1, meta.compare( null, " 1 " ) ); // null < " 1 "
assertSignum( -1, meta.compare( null, "1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1 " ) ); // null < "1 "
assertSignum( 1, meta.compare( "", null ) ); // "" > null
assertSignum( 0, meta.compare( "", "" ) ); // "" == ""
assertSignum( -1, meta.compare( "", " " ) ); // "" < " "
assertSignum( -1, meta.compare( "", " 1" ) ); // "" < " 1"
assertSignum( -1, meta.compare( "", " 1 " ) ); // "" < " 1 "
assertSignum( -1, meta.compare( "", "1" ) ); // "" < "1"
assertSignum( -1, meta.compare( "", "1 " ) ); // "" < "1 "
assertSignum( 1, meta.compare( " ", null ) ); // " " > null
assertSignum( 1, meta.compare( " ", "" ) ); // " " > ""
assertSignum( 0, meta.compare( " ", " " ) ); // " " == " "
assertSignum( -1, meta.compare( " ", " 1" ) ); // " " < " 1"
assertSignum( -1, meta.compare( " ", " 1 " ) ); // " " < " 1 "
assertSignum( -1, meta.compare( " ", "1" ) ); // " " < "1"
assertSignum( -1, meta.compare( " ", "1 " ) ); // " " < "1 "
assertSignum( 1, meta.compare( " 1", null ) ); // " 1" > null
assertSignum( 1, meta.compare( " 1", "" ) ); // " 1" > ""
assertSignum( 1, meta.compare( " 1", " " ) ); // " 1" > " "
assertSignum( 0, meta.compare( " 1", " 1" ) ); // " 1" == " 1"
assertSignum( -1, meta.compare( " 1", " 1 " ) ); // " 1" < " 1 "
assertSignum( -1, meta.compare( " 1", "1" ) ); // " 1" < "1"
assertSignum( -1, meta.compare( " 1", "1 " ) ); // " 1" < "1 "
assertSignum( 1, meta.compare( " 1 ", null ) ); // " 1 " > null
assertSignum( 1, meta.compare( " 1 ", "" ) ); // " 1 " > ""
assertSignum( 1, meta.compare( " 1 ", " " ) ); // " 1 " > " "
assertSignum( 1, meta.compare( " 1 ", " 1" ) ); // " 1 " > " 1"
assertSignum( 0, meta.compare( " 1 ", " 1 " ) ); // " 1 " == " 1 "
assertSignum( -1, meta.compare( " 1 ", "1" ) ); // " 1 " < "1"
assertSignum( -1, meta.compare( " 1 ", "1 " ) ); // " 1 " < "1 "
assertSignum( 1, meta.compare( "1", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1", "" ) ); // "1" > ""
assertSignum( 1, meta.compare( "1", " " ) ); // "1" > " "
assertSignum( 1, meta.compare( "1", " 1" ) ); // "1" > " 1"
assertSignum( 1, meta.compare( "1", " 1 " ) ); // "1" > " 1 "
assertSignum( 0, meta.compare( "1", "1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( "1", "1 " ) ); // "1" < "1 "
assertSignum( 1, meta.compare( "1 ", null ) ); // "1 " > null
assertSignum( 1, meta.compare( "1 ", "" ) ); // "1 " > ""
assertSignum( 1, meta.compare( "1 ", " " ) ); // "1 " > " "
assertSignum( 1, meta.compare( "1 ", " 1" ) ); // "1 " > " 1"
assertSignum( 1, meta.compare( "1 ", " 1 " ) ); // "1 " > " 1 "
assertSignum( 1, meta.compare( "1 ", "1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( "1 ", "1 " ) ); // "1 " == "1 "
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_LEFT );
assertSignum( 0, meta.compare( null, null ) ); // null == null
assertSignum( -1, meta.compare( null, "" ) ); // null < ""
assertSignum( -1, meta.compare( null, " " ) ); // null < ""
assertSignum( -1, meta.compare( null, " 1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, " 1 " ) ); // null < "1 "
assertSignum( -1, meta.compare( null, "1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1 " ) ); // null < "1 "
assertSignum( 1, meta.compare( "", null ) ); // "" > null
assertSignum( 0, meta.compare( "", "" ) ); // "" == ""
assertSignum( 0, meta.compare( "", " " ) ); // "" == ""
assertSignum( -1, meta.compare( "", " 1" ) ); // "" < "1"
assertSignum( -1, meta.compare( "", " 1 " ) ); // "" < "1 "
assertSignum( -1, meta.compare( "", "1" ) ); // "" < "1"
assertSignum( -1, meta.compare( "", "1 " ) ); // "" < "1 "
assertSignum( 1, meta.compare( " ", null ) ); // "" > null
assertSignum( 0, meta.compare( " ", "" ) ); // "" == ""
assertSignum( 0, meta.compare( " ", " " ) ); // "" == ""
assertSignum( -1, meta.compare( " ", " 1" ) ); // "" < "1"
assertSignum( -1, meta.compare( " ", " 1 " ) ); // "" < "1 "
assertSignum( -1, meta.compare( " ", "1" ) ); // "" < "1"
assertSignum( -1, meta.compare( " ", "1 " ) ); // "" < "1 "
assertSignum( 1, meta.compare( " 1", null ) ); // "1" > null
assertSignum( 1, meta.compare( " 1", "" ) ); // "1" > ""
assertSignum( 1, meta.compare( " 1", " " ) ); // "1" > ""
assertSignum( 0, meta.compare( " 1", " 1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( " 1", " 1 " ) ); // "1" < "1 "
assertSignum( 0, meta.compare( " 1", "1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( " 1", "1 " ) ); // "1" < "1 "
assertSignum( 1, meta.compare( " 1 ", null ) ); // "1 " > null
assertSignum( 1, meta.compare( " 1 ", "" ) ); // "1 " > ""
assertSignum( 1, meta.compare( " 1 ", " " ) ); // "1 " > ""
assertSignum( 1, meta.compare( " 1 ", " 1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( " 1 ", " 1 " ) ); // "1 " == "1 "
assertSignum( 1, meta.compare( " 1 ", "1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( " 1 ", "1 " ) ); // "1 " == "1 "
assertSignum( 1, meta.compare( "1", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1", "" ) ); // "1" > ""
assertSignum( 1, meta.compare( "1", " " ) ); // "1" > ""
assertSignum( 0, meta.compare( "1", " 1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( "1", " 1 " ) ); // "1" < "1 "
assertSignum( 0, meta.compare( "1", "1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( "1", "1 " ) ); // "1" < "1 "
assertSignum( 1, meta.compare( "1 ", null ) ); // "1 " > null
assertSignum( 1, meta.compare( "1 ", "" ) ); // "1 " > ""
assertSignum( 1, meta.compare( "1 ", " " ) ); // "1 " > ""
assertSignum( 1, meta.compare( "1 ", " 1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( "1 ", " 1 " ) ); // "1 " == "1 "
assertSignum( 1, meta.compare( "1 ", "1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( "1 ", "1 " ) ); // "1 " == "1 "
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_RIGHT );
assertSignum( 0, meta.compare( null, null ) ); // null == null
assertSignum( -1, meta.compare( null, "" ) ); // null < ""
assertSignum( -1, meta.compare( null, " " ) ); // null < ""
assertSignum( -1, meta.compare( null, " 1" ) ); // null < " 1"
assertSignum( -1, meta.compare( null, " 1 " ) ); // null < " 1"
assertSignum( -1, meta.compare( null, "1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1 " ) ); // null < "1"
assertSignum( 1, meta.compare( "", null ) ); // "" > null
assertSignum( 0, meta.compare( "", "" ) ); // "" == ""
assertSignum( 0, meta.compare( "", " " ) ); // "" == ""
assertSignum( -1, meta.compare( "", " 1" ) ); // "" < " 1"
assertSignum( -1, meta.compare( "", " 1 " ) ); // "" < " 1"
assertSignum( -1, meta.compare( "", "1" ) ); // "" < "1"
assertSignum( -1, meta.compare( "", "1 " ) ); // "" < "1"
assertSignum( 1, meta.compare( " ", null ) ); // "" > null
assertSignum( 0, meta.compare( " ", "" ) ); // "" == ""
assertSignum( 0, meta.compare( " ", " " ) ); // "" == ""
assertSignum( -1, meta.compare( " ", " 1" ) ); // "" < " 1"
assertSignum( -1, meta.compare( " ", " 1 " ) ); // "" < " 1"
assertSignum( -1, meta.compare( " ", "1" ) ); // "" < "1"
assertSignum( -1, meta.compare( " ", "1 " ) ); // "" < "1"
assertSignum( 1, meta.compare( " 1", null ) ); // " 1" > null
assertSignum( 1, meta.compare( " 1", "" ) ); // " 1" > ""
assertSignum( 1, meta.compare( " 1", " " ) ); // " 1" > ""
assertSignum( 0, meta.compare( " 1", " 1" ) ); // " 1" == " 1"
assertSignum( 0, meta.compare( " 1", " 1 " ) ); // " 1" == " 1"
assertSignum( -1, meta.compare( " 1", "1" ) ); // " 1" < "1"
assertSignum( -1, meta.compare( " 1", "1 " ) ); // " 1" < "1"
assertSignum( 1, meta.compare( " 1 ", null ) ); // " 1" > null
assertSignum( 1, meta.compare( " 1 ", "" ) ); // " 1" > ""
assertSignum( 1, meta.compare( " 1 ", " " ) ); // " 1" > ""
assertSignum( 0, meta.compare( " 1 ", " 1" ) ); // " 1" == " 1"
assertSignum( 0, meta.compare( " 1 ", " 1 " ) ); // " 1" == " 1"
assertSignum( -1, meta.compare( " 1 ", "1" ) ); // " 1" < "1"
assertSignum( -1, meta.compare( " 1 ", "1 " ) ); // " 1" < "1"
assertSignum( 1, meta.compare( "1", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1", "" ) ); // "1" > ""
assertSignum( 1, meta.compare( "1", " " ) ); // "1" > ""
assertSignum( 1, meta.compare( "1", " 1" ) ); // "1" > " 1"
assertSignum( 1, meta.compare( "1", " 1 " ) ); // "1" > " 1"
assertSignum( 0, meta.compare( "1", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1", "1 " ) ); // "1" == "1"
assertSignum( 1, meta.compare( "1 ", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1 ", "" ) ); // "1" > ""
assertSignum( 1, meta.compare( "1 ", " " ) ); // "1" > ""
assertSignum( 1, meta.compare( "1 ", " 1" ) ); // "1" > " 1"
assertSignum( 1, meta.compare( "1 ", " 1 " ) ); // "1" > " 1"
assertSignum( 0, meta.compare( "1 ", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1 ", "1 " ) ); // "1" == "1"
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_BOTH );
assertSignum( 0, meta.compare( null, null ) ); // null == null
assertSignum( -1, meta.compare( null, "" ) ); // null < ""
assertSignum( -1, meta.compare( null, " " ) ); // null < ""
assertSignum( -1, meta.compare( null, " 1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, " 1 " ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1 " ) ); // null < "1"
assertSignum( 1, meta.compare( "", null ) ); // "" > null
assertSignum( 0, meta.compare( "", "" ) ); // "" == ""
assertSignum( 0, meta.compare( "", " " ) ); // "" == ""
assertSignum( -1, meta.compare( "", " 1" ) ); // "" < "1"
assertSignum( -1, meta.compare( "", " 1 " ) ); // "" < "1"
assertSignum( -1, meta.compare( "", "1" ) ); // "" < "1"
assertSignum( -1, meta.compare( "", "1 " ) ); // "" < "1"
assertSignum( 1, meta.compare( " ", null ) ); // "" > null
assertSignum( 0, meta.compare( " ", "" ) ); // "" == ""
assertSignum( 0, meta.compare( " ", " " ) ); // "" == ""
assertSignum( -1, meta.compare( " ", " 1" ) ); // "" < "1"
assertSignum( -1, meta.compare( " ", " 1 " ) ); // "" < "1"
assertSignum( -1, meta.compare( " ", "1" ) ); // "" < "1"
assertSignum( -1, meta.compare( " ", "1 " ) ); // "" < "1"
assertSignum( 1, meta.compare( " 1", null ) ); // "1" > null
assertSignum( 1, meta.compare( " 1", "" ) ); // "1" > ""
assertSignum( 1, meta.compare( " 1", " " ) ); // "1" > ""
assertSignum( 0, meta.compare( " 1", " 1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1", " 1 " ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1", "1 " ) ); // "1" == "1"
assertSignum( 1, meta.compare( " 1 ", null ) ); // "1" > null
assertSignum( 1, meta.compare( " 1 ", "" ) ); // "1" > ""
assertSignum( 1, meta.compare( " 1 ", " " ) ); // "1" > ""
assertSignum( 0, meta.compare( " 1 ", " 1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1 ", " 1 " ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1 ", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1 ", "1 " ) ); // "1" == "1"
assertSignum( 1, meta.compare( "1", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1", "" ) ); // "1" > ""
assertSignum( 1, meta.compare( "1", " " ) ); // "1" > ""
assertSignum( 0, meta.compare( "1", " 1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1", " 1 " ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1", "1 " ) ); // "1" == "1"
assertSignum( 1, meta.compare( "1 ", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1 ", "" ) ); // "1" > ""
assertSignum( 1, meta.compare( "1 ", " " ) ); // "1" > ""
assertSignum( 0, meta.compare( "1 ", " 1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1 ", " 1 " ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1 ", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1 ", "1 " ) ); // "1" == "1"
}
@Test
public void testCompare_emptyIsNull() throws KettleValueException {
meta.setNullsAndEmptyAreDifferent( false );
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_NONE );
assertSignum( 0, meta.compare( null, null ) ); // null == null
assertSignum( 0, meta.compare( null, "" ) ); // null == null
assertSignum( -1, meta.compare( null, " " ) ); // null < " "
assertSignum( -1, meta.compare( null, " 1" ) ); // null < " 1"
assertSignum( -1, meta.compare( null, " 1 " ) ); // null < " 1 "
assertSignum( -1, meta.compare( null, "1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1 " ) ); // null < "1 "
assertSignum( 0, meta.compare( "", null ) ); // null > null
assertSignum( 0, meta.compare( "", "" ) ); // null == null
assertSignum( -1, meta.compare( "", " " ) ); // null < " "
assertSignum( -1, meta.compare( "", " 1" ) ); // null < " 1"
assertSignum( -1, meta.compare( "", " 1 " ) ); // null < " 1 "
assertSignum( -1, meta.compare( "", "1" ) ); // null < "1"
assertSignum( -1, meta.compare( "", "1 " ) ); // null < "1 "
assertSignum( 1, meta.compare( " ", null ) ); // " " > null
assertSignum( 1, meta.compare( " ", "" ) ); // " " > null
assertSignum( 0, meta.compare( " ", " " ) ); // " " == " "
assertSignum( -1, meta.compare( " ", " 1" ) ); // " " < " 1"
assertSignum( -1, meta.compare( " ", " 1 " ) ); // " " < " 1 "
assertSignum( -1, meta.compare( " ", "1" ) ); // " " < "1"
assertSignum( -1, meta.compare( " ", "1 " ) ); // " " < "1 "
assertSignum( 1, meta.compare( " 1", null ) ); // " 1" > null
assertSignum( 1, meta.compare( " 1", "" ) ); // " 1" > null
assertSignum( 1, meta.compare( " 1", " " ) ); // " 1" > " "
assertSignum( 0, meta.compare( " 1", " 1" ) ); // " 1" == " 1"
assertSignum( -1, meta.compare( " 1", " 1 " ) ); // " 1" < " 1 "
assertSignum( -1, meta.compare( " 1", "1" ) ); // " 1" < "1"
assertSignum( -1, meta.compare( " 1", "1 " ) ); // " 1" < "1 "
assertSignum( 1, meta.compare( " 1 ", null ) ); // " 1 " > null
assertSignum( 1, meta.compare( " 1 ", "" ) ); // " 1 " > null
assertSignum( 1, meta.compare( " 1 ", " " ) ); // " 1 " > " "
assertSignum( 1, meta.compare( " 1 ", " 1" ) ); // " 1 " > " 1"
assertSignum( 0, meta.compare( " 1 ", " 1 " ) ); // " 1 " == " 1 "
assertSignum( -1, meta.compare( " 1 ", "1" ) ); // " 1 " < "1"
assertSignum( -1, meta.compare( " 1 ", "1 " ) ); // " 1 " < "1 "
assertSignum( 1, meta.compare( "1", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1", "" ) ); // "1" > null
assertSignum( 1, meta.compare( "1", " " ) ); // "1" > " "
assertSignum( 1, meta.compare( "1", " 1" ) ); // "1" > " 1"
assertSignum( 1, meta.compare( "1", " 1 " ) ); // "1" > " 1 "
assertSignum( 0, meta.compare( "1", "1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( "1", "1 " ) ); // "1" < "1 "
assertSignum( 1, meta.compare( "1 ", null ) ); // "1 " > null
assertSignum( 1, meta.compare( "1 ", "" ) ); // "1 " > null
assertSignum( 1, meta.compare( "1 ", " " ) ); // "1 " > " "
assertSignum( 1, meta.compare( "1 ", " 1" ) ); // "1 " > " 1"
assertSignum( 1, meta.compare( "1 ", " 1 " ) ); // "1 " > " 1 "
assertSignum( 1, meta.compare( "1 ", "1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( "1 ", "1 " ) ); // "1 " == "1 "
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_LEFT );
assertSignum( 0, meta.compare( null, null ) ); // null == null
assertSignum( 0, meta.compare( null, "" ) ); // null < null
// assertSignum( 0, meta.compare( null, " " ) ); // null == null //TODO: Is it correct?
assertSignum( -1, meta.compare( null, " " ) ); // null < null //TODO: Is it correct?
assertSignum( -1, meta.compare( null, " 1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, " 1 " ) ); // null < "1 "
assertSignum( -1, meta.compare( null, "1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1 " ) ); // null < "1 "
assertSignum( 0, meta.compare( "", null ) ); // null == null
assertSignum( 0, meta.compare( "", "" ) ); // null == null
// assertSignum( 0, meta.compare( "", " " ) ); // null == null //TODO: Is it correct?
assertSignum( -1, meta.compare( "", " " ) ); // null < null //TODO: Is it correct?
assertSignum( -1, meta.compare( "", " 1" ) ); // null < "1"
assertSignum( -1, meta.compare( "", " 1 " ) ); // null < "1 "
assertSignum( -1, meta.compare( "", "1" ) ); // null < "1"
assertSignum( -1, meta.compare( "", "1 " ) ); // null < "1 "
assertSignum( 1, meta.compare( " ", null ) ); // null > null
// assertSignum( 0, meta.compare( " ", "" ) ); // null == null //TODO: Is it correct?
assertSignum( 1, meta.compare( " ", "" ) ); // null > null //TODO: Is it correct?
assertSignum( 0, meta.compare( " ", " " ) ); // null == null
assertSignum( -1, meta.compare( " ", " 1" ) ); // null < "1"
assertSignum( -1, meta.compare( " ", " 1 " ) ); // null < "1 "
assertSignum( -1, meta.compare( " ", "1" ) ); // null < "1"
assertSignum( -1, meta.compare( " ", "1 " ) ); // null < "1 "
assertSignum( 1, meta.compare( " 1", null ) ); // "1" > null
assertSignum( 1, meta.compare( " 1", "" ) ); // "1" > null
assertSignum( 1, meta.compare( " 1", " " ) ); // "1" > null
assertSignum( 0, meta.compare( " 1", " 1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( " 1", " 1 " ) ); // "1" < "1 "
assertSignum( 0, meta.compare( " 1", "1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( " 1", "1 " ) ); // "1" < "1 "
assertSignum( 1, meta.compare( " 1 ", null ) ); // "1 " > null
assertSignum( 1, meta.compare( " 1 ", "" ) ); // "1 " > null
assertSignum( 1, meta.compare( " 1 ", " " ) ); // "1 " > null
assertSignum( 1, meta.compare( " 1 ", " 1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( " 1 ", " 1 " ) ); // "1 " == "1 "
assertSignum( 1, meta.compare( " 1 ", "1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( " 1 ", "1 " ) ); // "1 " == "1 "
assertSignum( 1, meta.compare( "1", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1", "" ) ); // "1" > null
assertSignum( 1, meta.compare( "1", " " ) ); // "1" > null
assertSignum( 0, meta.compare( "1", " 1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( "1", " 1 " ) ); // "1" < "1 "
assertSignum( 0, meta.compare( "1", "1" ) ); // "1" == "1"
assertSignum( -1, meta.compare( "1", "1 " ) ); // "1" < "1 "
assertSignum( 1, meta.compare( "1 ", null ) ); // "1 " > null
assertSignum( 1, meta.compare( "1 ", "" ) ); // "1 " > null
assertSignum( 1, meta.compare( "1 ", " " ) ); // "1 " > null
assertSignum( 1, meta.compare( "1 ", " 1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( "1 ", " 1 " ) ); // "1 " == "1 "
assertSignum( 1, meta.compare( "1 ", "1" ) ); // "1 " > "1"
assertSignum( 0, meta.compare( "1 ", "1 " ) ); // "1 " == "1 "
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_RIGHT );
assertSignum( 0, meta.compare( null, null ) ); // null == null
assertSignum( 0, meta.compare( null, "" ) ); // null == null
// assertSignum( 0, meta.compare( null, " " ) ); // null == null //TODO: Is it correct?
assertSignum( -1, meta.compare( null, " " ) ); // null < null //TODO: Is it correct?
assertSignum( -1, meta.compare( null, " 1" ) ); // null < " 1"
assertSignum( -1, meta.compare( null, " 1 " ) ); // null < " 1"
assertSignum( -1, meta.compare( null, "1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1 " ) ); // null < "1"
assertSignum( 0, meta.compare( "", null ) ); // null == null
assertSignum( 0, meta.compare( "", "" ) ); // null == null
// assertSignum( 0, meta.compare( "", " " ) ); // null == null //TODO: Is it correct?
assertSignum( -1, meta.compare( "", " " ) ); // null < null //TODO: Is it correct?
assertSignum( -1, meta.compare( "", " 1" ) ); // null < " 1"
assertSignum( -1, meta.compare( "", " 1 " ) ); // null < " 1"
assertSignum( -1, meta.compare( "", "1" ) ); // null < "1"
assertSignum( -1, meta.compare( "", "1 " ) ); // null < "1"
// assertSignum( 0, meta.compare( " ", null ) ); // null == null //TODO: Is it correct?
assertSignum( 1, meta.compare( " ", null ) ); // null > null //TODO: Is it correct?
// assertSignum( 0, meta.compare( " ", "" ) ); // null == null //TODO: Is it correct?
assertSignum( 1, meta.compare( " ", "" ) ); // null > null //TODO: Is it correct?
assertSignum( 0, meta.compare( " ", " " ) ); // null == null
assertSignum( -1, meta.compare( " ", " 1" ) ); // null < " 1"
assertSignum( -1, meta.compare( " ", " 1 " ) ); // null < " 1"
assertSignum( -1, meta.compare( " ", "1" ) ); // null < "1"
assertSignum( -1, meta.compare( " ", "1 " ) ); // null < "1"
assertSignum( 1, meta.compare( " 1", null ) ); // " 1" > null
assertSignum( 1, meta.compare( " 1", "" ) ); // " 1" > null
assertSignum( 1, meta.compare( " 1", " " ) ); // " 1" > null
assertSignum( 0, meta.compare( " 1", " 1" ) ); // " 1" == " 1"
assertSignum( 0, meta.compare( " 1", " 1 " ) ); // " 1" == " 1"
assertSignum( -1, meta.compare( " 1", "1" ) ); // " 1" < "1"
assertSignum( -1, meta.compare( " 1", "1 " ) ); // " 1" < "1"
assertSignum( 1, meta.compare( " 1 ", null ) ); // " 1" > null
assertSignum( 1, meta.compare( " 1 ", "" ) ); // " 1" > null
assertSignum( 1, meta.compare( " 1 ", " " ) ); // " 1" > null
assertSignum( 0, meta.compare( " 1 ", " 1" ) ); // " 1" == " 1"
assertSignum( 0, meta.compare( " 1 ", " 1 " ) ); // " 1" == " 1"
assertSignum( -1, meta.compare( " 1 ", "1" ) ); // " 1" < "1"
assertSignum( -1, meta.compare( " 1 ", "1 " ) ); // " 1" < "1"
assertSignum( 1, meta.compare( "1", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1", "" ) ); // "1" > null
assertSignum( 1, meta.compare( "1", " " ) ); // "1" > null
assertSignum( 1, meta.compare( "1", " 1" ) ); // "1" > " 1"
assertSignum( 1, meta.compare( "1", " 1 " ) ); // "1" > " 1"
assertSignum( 0, meta.compare( "1", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1", "1 " ) ); // "1" == "1"
assertSignum( 1, meta.compare( "1 ", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1 ", "" ) ); // "1" > null
assertSignum( 1, meta.compare( "1 ", " " ) ); // "1" > null
assertSignum( 1, meta.compare( "1 ", " 1" ) ); // "1" > " 1"
assertSignum( 1, meta.compare( "1 ", " 1 " ) ); // "1" > " 1"
assertSignum( 0, meta.compare( "1 ", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1 ", "1 " ) ); // "1" == "1"
meta.setTrimType( ValueMetaInterface.TRIM_TYPE_BOTH );
assertSignum( 0, meta.compare( null, null ) ); // null == null
assertSignum( 0, meta.compare( null, "" ) ); // null == null
// assertSignum( 0, meta.compare( null, " " ) ); // null == null //TODO: Is it correct?
assertSignum( -1, meta.compare( null, " " ) ); // null < null //TODO: Is it correct?
assertSignum( -1, meta.compare( null, " 1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, " 1 " ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1" ) ); // null < "1"
assertSignum( -1, meta.compare( null, "1 " ) ); // null < "1"
assertSignum( 0, meta.compare( "", null ) ); // null == null
assertSignum( 0, meta.compare( "", "" ) ); // null == null
// assertSignum( 0, meta.compare( "", " " ) ); // null == null //TODO: Is it correct?
assertSignum( -1, meta.compare( "", " " ) ); // null < null //TODO: Is it correct?
assertSignum( -1, meta.compare( "", " 1" ) ); // null < "1"
assertSignum( -1, meta.compare( "", " 1 " ) ); // null < "1"
assertSignum( -1, meta.compare( "", "1" ) ); // null < "1"
assertSignum( -1, meta.compare( "", "1 " ) ); // null < "1"
// assertSignum( 0, meta.compare( " ", null ) ); // null == null //TODO: Is it correct?
assertSignum( 1, meta.compare( " ", null ) ); // null > null //TODO: Is it correct?
// assertSignum( 0, meta.compare( " ", "" ) ); // null == null //TODO: Is it correct?
assertSignum( 1, meta.compare( " ", "" ) ); // null > null //TODO: Is it correct?
assertSignum( 0, meta.compare( " ", " " ) ); // null == null
assertSignum( -1, meta.compare( " ", " 1" ) ); // null < "1"
assertSignum( -1, meta.compare( " ", " 1 " ) ); // null < "1"
assertSignum( -1, meta.compare( " ", "1" ) ); // null < "1"
assertSignum( -1, meta.compare( " ", "1 " ) ); // null < "1"
assertSignum( 1, meta.compare( " 1", null ) ); // "1" > null
assertSignum( 1, meta.compare( " 1", "" ) ); // "1" > null
assertSignum( 1, meta.compare( " 1", " " ) ); // "1" > null
assertSignum( 0, meta.compare( " 1", " 1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1", " 1 " ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1", "1 " ) ); // "1" == "1"
assertSignum( 1, meta.compare( " 1 ", null ) ); // "1" > null
assertSignum( 1, meta.compare( " 1 ", "" ) ); // "1" > null
assertSignum( 1, meta.compare( " 1 ", " " ) ); // "1" > null
assertSignum( 0, meta.compare( " 1 ", " 1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1 ", " 1 " ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1 ", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( " 1 ", "1 " ) ); // "1" == "1"
assertSignum( 1, meta.compare( "1", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1", "" ) ); // "1" > null
assertSignum( 1, meta.compare( "1", " " ) ); // "1" > null
assertSignum( 0, meta.compare( "1", " 1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1", " 1 " ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1", "1 " ) ); // "1" == "1"
assertSignum( 1, meta.compare( "1 ", null ) ); // "1" > null
assertSignum( 1, meta.compare( "1 ", "" ) ); // "1" > null
assertSignum( 1, meta.compare( "1 ", " " ) ); // "1" > null
assertSignum( 0, meta.compare( "1 ", " 1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1 ", " 1 " ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1 ", "1" ) ); // "1" == "1"
assertSignum( 0, meta.compare( "1 ", "1 " ) ); // "1" == "1"
}
@Test
public void testCompare_collatorEnabled() throws KettleValueException {
ValueMetaString meta = new ValueMetaString( BASE_VALUE );
meta.setCollatorDisabled( false );
meta.setCollatorLocale( Locale.FRENCH );
meta.setCollatorStrength( 3 );
assertSignum( -1, meta.compare( "E", "F" ) );
assertSignum( -1, meta.compare( "e", "\u00e9" ) );
assertSignum( -1, meta.compare( "e", "E" ) );
assertSignum( -1, meta.compare( "\u0001", "\u0002" ) );
assertSignum( 0, meta.compare( "e", "e" ) );
meta.setCollatorStrength( 2 );
assertSignum( -1, meta.compare( "E", "F" ) );
assertSignum( -1, meta.compare( "e", "\u00e9" ) );
assertSignum( -1, meta.compare( "e", "E" ) );
assertSignum( 0, meta.compare( "\u0001", "\u0002" ) );
assertSignum( 0, meta.compare( "e", "e" ) );
meta.setCollatorStrength( 1 );
assertSignum( -1, meta.compare( "E", "F" ) );
assertSignum( -1, meta.compare( "e", "\u00e9" ) );
assertSignum( 0, meta.compare( "e", "E" ) );
assertSignum( 0, meta.compare( "\u0001", "\u0002" ) );
assertSignum( 0, meta.compare( "e", "e" ) );
meta.setCollatorStrength( 0 );
assertSignum( -1, meta.compare( "E", "F" ) );
assertSignum( 0, meta.compare( "e", "\u00e9" ) );
assertSignum( 0, meta.compare( "e", "E" ) );
assertSignum( 0, meta.compare( "\u0001", "\u0002" ) );
assertSignum( 0, meta.compare( "e", "e" ) );
}
@Test
public void testGetIntegerWithoutConversionMask() throws KettleValueException, ParseException {
String value = "100.56";
ValueMetaInterface stringValueMeta = new ValueMetaString( "test" );
Long expected = 100L;
Long result = stringValueMeta.getInteger( value );
assertEquals( expected, result );
}
@Test
public void testGetNumberWithoutConversionMask() throws KettleValueException, ParseException {
String value = "100.56";
ValueMetaInterface stringValueMeta = new ValueMetaString( "test" );
Double expected = 100.56D;
Double result = stringValueMeta.getNumber( value );
assertEquals( expected, result );
}
@Test
public void testGetBigNumberWithoutConversionMask() throws KettleValueException, ParseException {
String value = "100.5";
ValueMetaInterface stringValueMeta = new ValueMetaString( "test" );
BigDecimal expected = new BigDecimal( 100.5 );
BigDecimal result = stringValueMeta.getBigNumber( value );
assertEquals( expected, result );
}
@Test
public void testGetDateWithoutConversionMask() throws KettleValueException, ParseException {
Calendar date = new GregorianCalendar( 2017, 9, 20 ); // month 9 = Oct
String value = "2017/10/20 00:00:00.000";
ValueMetaInterface stringValueMeta = new ValueMetaString( "test" );
Date expected = Date.from( date.toInstant() );
Date result = stringValueMeta.getDate( value );
assertEquals( expected, result );
}
private static void assertSignum( int expected, int actual ) {
assertSignum( "", expected, actual );
}
private static void assertSignum( String msg, int expected, int actual ) {
if ( expected < 0 ) {
if ( actual >= 0 ) {
Assert.failNotEquals( msg, "(<0)", actual );
}
} else if ( expected > 0 ) {
if ( actual <= 0 ) {
Assert.failNotEquals( msg, "(>0)", actual );
}
} else {
assertEquals( msg, expected, actual );
}
}
@SuppressWarnings( "deprecation" )
private static class ConfigurableMeta extends ValueMetaString {
private boolean nullsAndEmptyAreDifferent;
public ConfigurableMeta( String name ) {
super( name );
}
public void setNullsAndEmptyAreDifferent( boolean nullsAndEmptyAreDifferent ) {
this.nullsAndEmptyAreDifferent = nullsAndEmptyAreDifferent;
}
@Override
public boolean isNull( Object data ) throws KettleValueException {
return super.isNull( data, nullsAndEmptyAreDifferent );
}
@Override
protected String convertBinaryStringToString( byte[] binary ) throws KettleValueException {
return super.convertBinaryStringToString( binary, nullsAndEmptyAreDifferent );
}
}
}