/**
* Copyright 2012-2017 Gunnar Morling (http://www.gunnarmorling.de/)
* and/or other contributors as indicated by the @authors tag. See the
* copyright.txt file in the distribution for a full listing of all
* contributors.
*
* 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.mapstruct.ap.test.conversion.nativetypes;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mapstruct.ap.testutil.IssueKey;
import org.mapstruct.ap.testutil.WithClasses;
import org.mapstruct.ap.testutil.runner.AnnotationProcessorTestRunner;
@WithClasses({
ByteSource.class,
ByteTarget.class,
ByteWrapperSource.class,
ByteWrapperTarget.class,
ShortSource.class,
ShortTarget.class,
ShortWrapperSource.class,
ShortWrapperTarget.class,
IntSource.class,
IntTarget.class,
IntWrapperSource.class,
IntWrapperTarget.class,
LongSource.class,
LongTarget.class,
LongWrapperSource.class,
LongWrapperTarget.class,
FloatSource.class,
FloatTarget.class,
FloatWrapperSource.class,
FloatWrapperTarget.class,
DoubleSource.class,
DoubleTarget.class,
DoubleWrapperSource.class,
DoubleWrapperTarget.class,
SourceTargetMapper.class
})
@RunWith(AnnotationProcessorTestRunner.class)
public class NumberConversionTest {
@Test
public void shouldApplyByteConversions() {
ByteSource source = new ByteSource();
source.setB( (byte) 1 );
source.setBb( (byte) 2 );
source.setS( (byte) 3 );
source.setSs( (byte) 4 );
source.setI( (byte) 5 );
source.setIi( (byte) 6 );
source.setL( (byte) 7 );
source.setLl( (byte) 8 );
source.setF( (byte) 9 );
source.setFf( (byte) 10 );
source.setD( (byte) 11 );
source.setDd( (byte) 12 );
ByteTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyByteWrapperConversions() {
ByteWrapperSource source = new ByteWrapperSource();
source.setB( (byte) 1 );
source.setBb( (byte) 2 );
source.setS( (byte) 3 );
source.setSs( (byte) 4 );
source.setI( (byte) 5 );
source.setIi( (byte) 6 );
source.setL( (byte) 7 );
source.setLl( (byte) 8 );
source.setF( (byte) 9 );
source.setFf( (byte) 10 );
source.setD( (byte) 11 );
source.setDd( (byte) 12 );
ByteWrapperTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyShortConversions() {
ShortSource source = new ShortSource();
source.setB( (short) 1 );
source.setBb( (short) 2 );
source.setS( (short) 3 );
source.setSs( (short) 4 );
source.setI( (short) 5 );
source.setIi( (short) 6 );
source.setL( (short) 7 );
source.setLl( (short) 8 );
source.setF( (short) 9 );
source.setFf( (short) 10 );
source.setD( (short) 11 );
source.setDd( (short) 12 );
ShortTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyShortWrapperConversions() {
ShortWrapperSource source = new ShortWrapperSource();
source.setB( (short) 1 );
source.setBb( (short) 2 );
source.setS( (short) 3 );
source.setSs( (short) 4 );
source.setI( (short) 5 );
source.setIi( (short) 6 );
source.setL( (short) 7 );
source.setLl( (short) 8 );
source.setF( (short) 9 );
source.setFf( (short) 10 );
source.setD( (short) 11 );
source.setDd( (short) 12 );
ShortWrapperTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyIntConversions() {
IntSource source = new IntSource();
source.setB( 1 );
source.setBb( 2 );
source.setS( 3 );
source.setSs( 4 );
source.setI( 5 );
source.setIi( 6 );
source.setL( 7 );
source.setLl( 8 );
source.setF( 9 );
source.setFf( 10 );
source.setD( 11 );
source.setDd( 12 );
IntTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyIntWrapperConversions() {
IntWrapperSource source = new IntWrapperSource();
source.setB( 1 );
source.setBb( 2 );
source.setS( 3 );
source.setSs( 4 );
source.setI( 5 );
source.setIi( 6 );
source.setL( 7 );
source.setLl( 8 );
source.setF( 9 );
source.setFf( 10 );
source.setD( 11 );
source.setDd( 12 );
IntWrapperTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyLongConversions() {
LongSource source = new LongSource();
source.setB( 1 );
source.setBb( 2 );
source.setS( 3 );
source.setSs( 4 );
source.setI( 5 );
source.setIi( 6 );
source.setL( 7 );
source.setLl( 8 );
source.setF( 9 );
source.setFf( 10 );
source.setD( 11 );
source.setDd( 12 );
LongTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyLongWrapperConversions() {
LongWrapperSource source = new LongWrapperSource();
source.setB( (long) 1 );
source.setBb( (long) 2 );
source.setS( (long) 3 );
source.setSs( (long) 4 );
source.setI( (long) 5 );
source.setIi( (long) 6 );
source.setL( (long) 7 );
source.setLl( (long) 8 );
source.setF( (long) 9 );
source.setFf( (long) 10 );
source.setD( (long) 11 );
source.setDd( (long) 12 );
LongWrapperTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyFloatConversions() {
FloatSource source = new FloatSource();
source.setB( 1 );
source.setBb( 2 );
source.setS( 3 );
source.setSs( 4 );
source.setI( 5 );
source.setIi( 6 );
source.setL( 7 );
source.setLl( 8 );
source.setF( 9 );
source.setFf( 10 );
source.setD( 11 );
source.setDd( 12 );
FloatTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyFloatWrapperConversions() {
FloatWrapperSource source = new FloatWrapperSource();
source.setB( 1f );
source.setBb( 2f );
source.setS( 3f );
source.setSs( 4f );
source.setI( 5f );
source.setIi( 6f );
source.setL( 7f );
source.setLl( 8f );
source.setF( 9f );
source.setFf( 10f );
source.setD( 11f );
source.setDd( 12f );
FloatWrapperTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyDoubleConversions() {
DoubleSource source = new DoubleSource();
source.setB( 1 );
source.setBb( 2 );
source.setS( 3 );
source.setSs( 4 );
source.setI( 5 );
source.setIi( 6 );
source.setL( 7 );
source.setLl( 8 );
source.setF( 9 );
source.setFf( 10 );
source.setD( 11 );
source.setDd( 12 );
DoubleTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
public void shouldApplyDoubleWrapperConversions() {
DoubleWrapperSource source = new DoubleWrapperSource();
source.setB( 1d );
source.setBb( 2d );
source.setS( 3d );
source.setSs( 4d );
source.setI( 5d );
source.setIi( 6d );
source.setL( 7d );
source.setLl( 8d );
source.setF( 9d );
source.setFf( 10d );
source.setD( 11d );
source.setDd( 12d );
DoubleWrapperTarget target = SourceTargetMapper.INSTANCE.sourceToTarget( source );
assertThat( target ).isNotNull();
assertThat( target.getB() ).isEqualTo( (byte) 1 );
assertThat( target.getBb() ).isEqualTo( Byte.valueOf( (byte) 2 ) );
assertThat( target.getS() ).isEqualTo( (short) 3 );
assertThat( target.getSs() ).isEqualTo( Short.valueOf( (short) 4 ) );
assertThat( target.getI() ).isEqualTo( 5 );
assertThat( target.getIi() ).isEqualTo( Integer.valueOf( 6 ) );
assertThat( target.getL() ).isEqualTo( 7 );
assertThat( target.getLl() ).isEqualTo( Long.valueOf( 8 ) );
assertThat( target.getF() ).isEqualTo( 9f );
assertThat( target.getFf() ).isEqualTo( Float.valueOf( 10f ) );
assertThat( target.getD() ).isEqualTo( 11d );
assertThat( target.getDd() ).isEqualTo( Double.valueOf( 12d ) );
}
@Test
@IssueKey( "229" )
public void wrapperToPrimitveIsNullSafe() {
assertThat( SourceTargetMapper.INSTANCE.sourceToTarget( new ByteWrapperSource() ) ).isNotNull();
assertThat( SourceTargetMapper.INSTANCE.sourceToTarget( new DoubleWrapperSource() ) ).isNotNull();
assertThat( SourceTargetMapper.INSTANCE.sourceToTarget( new ShortWrapperSource() ) ).isNotNull();
assertThat( SourceTargetMapper.INSTANCE.sourceToTarget( new IntWrapperSource() ) ).isNotNull();
assertThat( SourceTargetMapper.INSTANCE.sourceToTarget( new FloatWrapperSource() ) ).isNotNull();
assertThat( SourceTargetMapper.INSTANCE.sourceToTarget( new LongWrapperSource() ) ).isNotNull();
}
}