From 071e5dc6b2ba2b03dcee4a85d7768eda6337e543 Mon Sep 17 00:00:00 2001 From: Sjaak Derksen Date: Sun, 10 Nov 2019 20:14:33 +0100 Subject: [PATCH] #1966 extra unit test (#1967) --- .../ap/test/bugs/_1966/Issue1966Mapper.java | 55 +++++++++++++++++++ .../ap/test/bugs/_1966/Issue1966Test.java | 36 ++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 processor/src/test/java/org/mapstruct/ap/test/bugs/_1966/Issue1966Mapper.java create mode 100644 processor/src/test/java/org/mapstruct/ap/test/bugs/_1966/Issue1966Test.java diff --git a/processor/src/test/java/org/mapstruct/ap/test/bugs/_1966/Issue1966Mapper.java b/processor/src/test/java/org/mapstruct/ap/test/bugs/_1966/Issue1966Mapper.java new file mode 100644 index 000000000..13f4d489b --- /dev/null +++ b/processor/src/test/java/org/mapstruct/ap/test/bugs/_1966/Issue1966Mapper.java @@ -0,0 +1,55 @@ +/* + * Copyright MapStruct Authors. + * + * Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0 + */ +package org.mapstruct.ap.test.bugs._1966; + +import java.util.Collections; +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.NullValueCheckStrategy; +import org.mapstruct.factory.Mappers; + +/** + * @author Sjaak Derksen + */ +@Mapper( imports = Collections.class ) +public interface Issue1966Mapper { + + Issue1966Mapper INSTANCE = Mappers.getMapper( Issue1966Mapper.class ); + + @Mapping(target = "previousNames", + nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, + defaultExpression = "java(Collections.emptyList())") + Animal toAnimal(AnimalRecord record); + + class AnimalRecord { + + private String[] previousNames; + + public String[] getPreviousNames() { + return previousNames; + } + + public void setPreviousNames(String[] previousNames) { + this.previousNames = previousNames; + } + } + + class Animal { + + private List previousNames; + + public List getPreviousNames() { + return previousNames; + } + + public void setPreviousNames(List previousNames) { + this.previousNames = previousNames; + } + } + +} diff --git a/processor/src/test/java/org/mapstruct/ap/test/bugs/_1966/Issue1966Test.java b/processor/src/test/java/org/mapstruct/ap/test/bugs/_1966/Issue1966Test.java new file mode 100644 index 000000000..9ad37958d --- /dev/null +++ b/processor/src/test/java/org/mapstruct/ap/test/bugs/_1966/Issue1966Test.java @@ -0,0 +1,36 @@ +/* + * Copyright MapStruct Authors. + * + * Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0 + */ +package org.mapstruct.ap.test.bugs._1966; + +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; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Sjaak Derksen + */ +@IssueKey("1966") +@RunWith(AnnotationProcessorTestRunner.class) +@WithClasses({ + Issue1966Mapper.class +}) +public class Issue1966Test { + + @Test + public void shouldSelectDefaultExpressionEvenWhenSourceInMappingIsNotSpecified() { + + Issue1966Mapper.AnimalRecord dto = new Issue1966Mapper.AnimalRecord(); + + Issue1966Mapper.Animal entity = Issue1966Mapper.INSTANCE.toAnimal( dto ); + + assertThat( entity.getPreviousNames() ).isNotNull(); + assertThat( entity.getPreviousNames() ).isEmpty(); + } +}