/** * 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.selection.primitives; 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; /** * * @author Sjaak Derksen */ @IssueKey("205") @WithClasses({ Source.class, Target.class, MyLong.class }) @RunWith(AnnotationProcessorTestRunner.class) public class PrimitiveVsWrappedSelectionTest { @Test @WithClasses( { WrappedMapper.class, PrimitiveMapper.class, SourceTargetMapper.class } ) public void shouldAlwaysSelectWrappedAndExplicitlyTypeConvertWrappedtoPrimitive() { WrappedMapper.setCalledUpon( false ); PrimitiveMapper.setCalledUpon( false ); Source source = new Source(); source.setPrimitiveInt( 15 ); source.setWrappedInt( 12 ); Target target = SourceTargetMapper.INSTANCE.toTarget( source ); assertThat( target ).isNotNull(); assertThat( target.getPrimitiveInt().getValue() ).isEqualTo( 15L ); assertThat( target.getWrappedInt().getValue() ).isEqualTo( 12L ); assertThat( WrappedMapper.isCalledUpon() ).isTrue(); assertThat( PrimitiveMapper.isCalledUpon() ).isFalse(); } @Test @WithClasses( { PrimitiveMapper.class, SourceTargetMapperPrimitive.class } ) public void shouldSelectPrimitiveMapperAlsoForWrapped() { WrappedMapper.setCalledUpon( false ); PrimitiveMapper.setCalledUpon( false ); Source source = new Source(); source.setPrimitiveInt( 15 ); source.setWrappedInt( 12 ); Target target = SourceTargetMapperPrimitive.INSTANCE.toTarget( source ); assertThat( target ).isNotNull(); assertThat( target.getPrimitiveInt().getValue() ).isEqualTo( 15L ); assertThat( target.getWrappedInt().getValue() ).isEqualTo( 12L ); assertThat( WrappedMapper.isCalledUpon() ).isFalse(); assertThat( PrimitiveMapper.isCalledUpon() ).isTrue(); } @Test @WithClasses( { WrappedMapper.class, SourceTargetMapperWrapped.class } ) public void shouldSelectWrappedMapperAlsoForPrimitive() { WrappedMapper.setCalledUpon( false ); PrimitiveMapper.setCalledUpon( false ); Source source = new Source(); source.setPrimitiveInt( 15 ); source.setWrappedInt( 12 ); Target target = SourceTargetMapperWrapped.INSTANCE.toTarget( source ); assertThat( target ).isNotNull(); assertThat( target.getPrimitiveInt().getValue() ).isEqualTo( 15L ); assertThat( target.getWrappedInt().getValue() ).isEqualTo( 12L ); assertThat( WrappedMapper.isCalledUpon() ).isTrue(); assertThat( PrimitiveMapper.isCalledUpon() ).isFalse(); } }