From cd058663f4143dbb072f17ebc77b4340a47c5f5f Mon Sep 17 00:00:00 2001 From: Andreas Gudian Date: Sun, 12 Jan 2014 21:49:09 +0100 Subject: [PATCH] #90 extend DefaultCollectionImplementationTest to cover all collection and map types declared in the test mapper --- .../DefaultCollectionImplementationTest.java | 121 +++++++++++++++--- .../defaultimplementation/TargetFoo.java | 7 +- 2 files changed, 107 insertions(+), 21 deletions(-) diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/DefaultCollectionImplementationTest.java b/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/DefaultCollectionImplementationTest.java index f3246ac8a..80f4931b0 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/DefaultCollectionImplementationTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/DefaultCollectionImplementationTest.java @@ -19,13 +19,22 @@ package org.mapstruct.ap.test.collection.defaultimplementation; import static org.fest.assertions.Assertions.assertThat; +import static org.fest.assertions.MapAssert.entry; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.NavigableMap; +import java.util.NavigableSet; import java.util.Set; +import java.util.SortedMap; +import java.util.SortedSet; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ConcurrentNavigableMap; import org.mapstruct.ap.testutil.IssueKey; import org.mapstruct.ap.testutil.MapperTestBase; @@ -35,27 +44,61 @@ import org.testng.annotations.Test; @WithClasses({ SourceFoo.class, TargetFoo.class, - SourceTargetMapper.class + SourceTargetMapper.class }) public class DefaultCollectionImplementationTest extends MapperTestBase { @Test - @IssueKey("6") - public void shouldUseDefaultImplementationForList() { - List target = SourceTargetMapper.INSTANCE.sourceFoosToTargetFoos( createSourceFooList() ); + @IssueKey( "6" ) + public void shouldUseDefaultImplementationForConcurrentMap() { + ConcurrentMap target = + SourceTargetMapper.INSTANCE.sourceFooMapToTargetFooConcurrentMap( createSourceFooMap() ); - assertThat( target ).isNotNull(); - assertThat( target ).containsExactly( new TargetFoo( "Bob" ), new TargetFoo( "Alice" ) ); + assertResultMap( target ); } @Test - @IssueKey("6") - public void shouldUseDefaultImplementationForSet() { - Set target = - SourceTargetMapper.INSTANCE.sourceFoosToTargetFoos( new HashSet( createSourceFooList() ) ); + @IssueKey( "6" ) + public void shouldUseDefaultImplementationForConcurrentNavigableMap() { + ConcurrentNavigableMap target = + SourceTargetMapper.INSTANCE.sourceFooMapToTargetFooConcurrentNavigableMap( createSourceFooMap() ); - assertThat( target ).isNotNull(); - assertThat( target ).containsOnly( new TargetFoo( "Bob" ), new TargetFoo( "Alice" ) ); + assertResultMap( target ); + } + + @Test + @IssueKey( "6" ) + public void shouldUseDefaultImplementationForMap() { + Map target = SourceTargetMapper.INSTANCE.sourceFooMapToTargetFooMap( createSourceFooMap() ); + + assertResultMap( target ); + } + + @Test + @IssueKey( "6" ) + public void shouldUseDefaultImplementationForNavigableMap() { + NavigableMap target = + SourceTargetMapper.INSTANCE.sourceFooMapToTargetFooNavigableMap( createSourceFooMap() ); + + assertResultMap( target ); + } + + @Test + @IssueKey( "6" ) + public void shouldUseDefaultImplementationForSortedMap() { + SortedMap target = + SourceTargetMapper.INSTANCE.sourceFooMapToTargetFooSortedMap( createSourceFooMap() ); + + assertResultMap( target ); + } + + @Test + @IssueKey( "6" ) + public void shouldUseDefaultImplementationForNaviableSet() { + NavigableSet target = + SourceTargetMapper.INSTANCE.sourceFoosToTargetFooNavigableSet( createSourceFooList() ); + + assertResultList( target ); } @Test @@ -64,8 +107,7 @@ public class DefaultCollectionImplementationTest extends MapperTestBase { Collection target = SourceTargetMapper.INSTANCE.sourceFoosToTargetFoos( (Collection) createSourceFooList() ); - assertThat( target ).isNotNull(); - assertThat( target ).containsOnly( new TargetFoo( "Bob" ), new TargetFoo( "Alice" ) ); + assertResultList( target ); } @Test @@ -74,17 +116,33 @@ public class DefaultCollectionImplementationTest extends MapperTestBase { Iterable target = SourceTargetMapper.INSTANCE.sourceFoosToTargetFoos( (Iterable) createSourceFooList() ); - assertThat( target ).isNotNull(); assertResultList( target ); } - private void assertResultList(Iterable fooIterable) { - assertThat( fooIterable ).isNotNull(); - assertThat( fooIterable ).containsOnly( new TargetFoo( "Bob" ), new TargetFoo( "Alice" ) ); + @Test + @IssueKey("6") + public void shouldUseDefaultImplementationForList() { + List target = SourceTargetMapper.INSTANCE.sourceFoosToTargetFoos( createSourceFooList() ); + + assertResultList( target ); } - private List createSourceFooList() { - return Arrays.asList( new SourceFoo( "Bob" ), new SourceFoo( "Alice" ) ); + @Test + @IssueKey("6") + public void shouldUseDefaultImplementationForSet() { + Set target = + SourceTargetMapper.INSTANCE.sourceFoosToTargetFoos( new HashSet( createSourceFooList() ) ); + + assertResultList( target ); + } + + @Test + @IssueKey( "6" ) + public void shouldUseDefaultImplementationForSortedSet() { + SortedSet target = + SourceTargetMapper.INSTANCE.sourceFoosToTargetFooSortedSet( createSourceFooList() ); + + assertResultList( target ); } @Test @@ -109,4 +167,27 @@ public class DefaultCollectionImplementationTest extends MapperTestBase { assertThat( target == result ).isTrue(); assertResultList( target ); } + + private void assertResultList(Iterable fooIterable) { + assertThat( fooIterable ).isNotNull(); + assertThat( fooIterable ).containsOnly( new TargetFoo( "Bob" ), new TargetFoo( "Alice" ) ); + } + + private void assertResultMap(Map result) { + assertThat( result ).isNotNull(); + assertThat( result ).hasSize( 2 ); + assertThat( result ).includes( entry( "1", new TargetFoo( "Bob" ) ), entry( "2", new TargetFoo( "Alice" ) ) ); + } + + private Map createSourceFooMap() { + Map map = new HashMap(); + map.put( 1L, new SourceFoo( "Bob" ) ); + map.put( 2L, new SourceFoo( "Alice" ) ); + + return map; + } + + private List createSourceFooList() { + return Arrays.asList( new SourceFoo( "Bob" ), new SourceFoo( "Alice" ) ); + } } diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/TargetFoo.java b/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/TargetFoo.java index 252444636..4e5335ff5 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/TargetFoo.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/TargetFoo.java @@ -18,7 +18,7 @@ */ package org.mapstruct.ap.test.collection.defaultimplementation; -public class TargetFoo { +public class TargetFoo implements Comparable { private String name; @@ -67,4 +67,9 @@ public class TargetFoo { } return true; } + + @Override + public int compareTo(TargetFoo o) { + return getName().compareTo( o.getName() ); + } }