package com.codiform.moo; import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.SortedSet; import org.junit.Ignore; import org.junit.Test; import com.codiform.moo.annotation.CollectionProperty; import com.codiform.moo.curry.Translate; /** * Testing how properties that contain collection classes are translated. */ public class CollectionPropertyCrossTranslationTest { @Test @Ignore( "This doesn't work yet. See issue #33: https://github.com/geoffreywiseman/Moo/issues/33" ) public void testTranslateLinkedHashSetToList() { OrdinalSet source = new OrdinalSet( new Ordinal( 2, "second" ), new Ordinal( 1, "first" ), new Ordinal( 3, "third" ) ); OrdinalListDto destination = Translate.to( OrdinalListDto.class ).from( source ); assertEquals( source.getOrdinals().size(), destination.getOrdinals().size() ); } public static class OrdinalSet { private Set<Ordinal> ordinals; public OrdinalSet(Ordinal... ordinals) { this.ordinals = new LinkedHashSet<Ordinal>(); for( Ordinal item : ordinals ) this.ordinals.add( item ); } public Set<Ordinal> getOrdinals() { return ordinals; } } public static class Ordinal implements Comparable<Ordinal> { private int rank; private String name; public Ordinal(int rank, String name) { this.rank = rank; this.name = name; } public int getRank() { return rank; } public String getName() { return name; } public int compareTo(Ordinal o) { return rank - o.rank; } } public static class OrdinalListDto { @CollectionProperty(itemClass = OrdinalDto.class) private List<OrdinalDto> ordinals; public List<OrdinalDto> getOrdinals() { return ordinals; } } public static class OrdinalSetDto { @CollectionProperty(itemClass = OrdinalDto.class) private SortedSet<OrdinalDto> ordinals; public SortedSet<OrdinalDto> getOrdinals() { return ordinals; } } public static class OrdinalDto implements Comparable<OrdinalDto> { private int rank; private String name; public int getRank() { return rank; } public String getName() { return name; } public int compareTo(OrdinalDto other) { return rank - other.rank; } } public static class StringsDomain { private List<String> strings; public StringsDomain(List<String> strings) { this.strings = strings; } public List<String> getStrings() { return strings; } } public static class TestDto { private List<String> strings; public List<String> getStrings() { return strings; } } public static class StockPrices { private Map<String, Double> prices = new HashMap<String, Double>(); public void setPrice(String symbol, double price) { prices.put( symbol, price ); } public Map<String, Double> getPrices() { return prices; } } public static class StockPricesDto { private Map<String, Double> prices = new HashMap<String, Double>(); public Map<String, Double> getPrices() { return prices; } } }