package com.codiform.moo; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.EnumSet; import java.util.HashSet; import java.util.Set; import org.junit.Test; import com.codiform.moo.curry.Translate; public class EnumCollectionPropertyTranslationTest { @Test public void testTranslateContainerWithoutTranslatingContents() { NatoLetterContainer source = new NatoLetterContainer( NatoLetter.GOLF, NatoLetter.WHISKEY ); UntranslatedDto dest = Translate.to( UntranslatedDto.class ).from( source ); assertEquals( 2, dest.getLetters().size() ); assertTrue( dest.getLetters().contains( NatoLetter.GOLF ) ); assertTrue( dest.getLetters().contains( NatoLetter.WHISKEY ) ); } @SuppressWarnings("unused") private static class NatoLetterContainer { private Set<NatoLetter> letters; public NatoLetterContainer() { letters = EnumSet.noneOf( NatoLetter.class ); } public NatoLetterContainer(NatoLetter one) { letters = EnumSet.of( one ); } public NatoLetterContainer(NatoLetter one, NatoLetter two) { letters = EnumSet.of( one, two ); } public NatoLetterContainer(NatoLetter one, NatoLetter two, NatoLetter three) { letters = EnumSet.of( one, two, three ); } public NatoLetterContainer(NatoLetter one, NatoLetter two, NatoLetter three, NatoLetter four) { letters = EnumSet.of( one, two, three, four ); } public Set<NatoLetter> getLetters() { return letters; } } @SuppressWarnings("unused") private static class UntranslatedDto { private Set<NatoLetter> letters; public UntranslatedDto() { letters = EnumSet.noneOf( NatoLetter.class ); } public Set<NatoLetter> getLetters() { return letters; } } private static enum NatoLetter { ALFA, BRAVO, CHARLIE, DELTA, ECHO, FOXTROT, GOLF, HOTEL, INDIA, JULIA, KILO, LIMA, MIKE, NOVEMBER, OSCAR, PAPA, QUEBEC, ROMEO, SIERRA, TANGO, UNIFORM, VICTOR, WHISKEY, XRAY, YANKEE, ZULU; } public static class EnumUtil { public static <E extends Enum<E>> Set<String> toString(Set<E> input) { HashSet<String> output = new HashSet<String>(); for( E item : input ) { output.add( item.name() ); } return output; } } }