/*
* *****************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2017 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.pdi.engine.serializers;
import org.junit.Test;
import org.pentaho.di.engine.api.events.DataEvent;
import org.pentaho.di.engine.api.model.Row;
import org.pentaho.di.engine.api.model.Rows;
import org.pentaho.di.engine.model.Operation;
import java.math.BigDecimal;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* Created by nbaker on 3/6/17.
*/
public class DataEventSerializerTest {
@Test
public void testDataEventSerializer() throws Exception {
Operation operation = mock( Operation.class );
when( operation.getId() ).thenReturn( "foo" );
Date date = new Date();
URI uri = new URI( "http://www.pentaho.com" );
List<Object> objects = new ArrayList<>();
objects.add( 100 );
objects.add( 100.50 );
objects.add( new BigDecimal( "10000000000000000000.50" ) );
objects.add( true );
objects.add( date );
objects.add( "A String" );
objects.add( uri );
List<String> names = new ArrayList<>();
names.add( "some int" );
names.add( "some Double" );
names.add( "some Decimal" );
names.add( "some Boolean" );
names.add( "some Date" );
names.add( "some String" );
names.add( "some Serializable" );
List<Class> classes = Arrays
.asList( Integer.class, Double.class, BigDecimal.class, Boolean.class, Date.class, String.class, Object.class );
Row row = new DeserializedRow( names, classes, objects );
List<Row> rowsList = Collections.singletonList( row );
Rows rows = new Rows( rowsList, Rows.TYPE.OUT, Rows.STATE.ACTIVE );
DataEvent<Operation> dataEvent = new DataEvent<>( operation, rows );
DataEventSerializer serializer = new DataEventSerializer();
String serialized = serializer.serialize( dataEvent );
System.out.println( serialized );
DataEvent deserialized = serializer.deserialize( serialized );
assertTrue( serializer.getSupportedClasses().contains( DataEvent.class ) );
assertEquals( dataEvent, deserialized );
}
}