package uk.co.acuminous.julez.mapper; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.TreeSet; import org.junit.Test; import uk.co.acuminous.julez.event.Event; import uk.co.acuminous.julez.mapper.TransformingMapper; import uk.co.acuminous.julez.mapper.TwoWayMapper; import uk.co.acuminous.julez.transformer.LowerCaseTransformer; public class TransformingMapperTest { TwoWayMapper mapper; Collection<String> keys; @Test public void mapsKeysToValues() { initDefaultMapper(); assertEquals(Event.ID, mapper.getKey("#id")); assertEquals(Event.TIMESTAMP, mapper.getKey("#timestamp")); } @Test public void mapsValuesToKeys() { initDefaultMapper(); assertEquals("#id", mapper.getValue(Event.ID)); assertEquals("#timestamp", mapper.getValue(Event.TIMESTAMP)); } @Test public void tolleratesMissingMappings() { initDefaultMapper(); assertNull(mapper.getValue("DOES NOT EXIST")); assertNull(mapper.getKey("DOES NOT EXIST")); } @Test public void providesAllKeys() { initDefaultMapper(); assertEquals(new TreeSet<String>(keys), new TreeSet<String>(mapper.getKeys())); } @Test public void keysMaintainOriginalOrder() { initExplicitlyOrderedMapper(); assertEquals(Arrays.asList("Z", "A", "F", "W"), new ArrayList<String>(mapper.getKeys())); } @Test public void providesAllValues() { initDefaultMapper(); assertEquals(new TreeSet<String>(Arrays.asList("#id", "#timestamp")), new TreeSet<String>(mapper.getValues())); } @Test public void valuesAreConsistentWithKeyOrder() { initExplicitlyOrderedMapper(); assertEquals(Arrays.asList("z", "a", "f", "w"), new ArrayList<String>(mapper.getValues())); } private void initDefaultMapper() { keys = new HashSet<String>(); keys.add(Event.ID); keys.add(Event.TIMESTAMP); mapper = new TransformingMapper(new LowerCaseTransformer(), keys); } private void initExplicitlyOrderedMapper() { keys = new ArrayList<String>(); keys.add("Z"); keys.add("A"); keys.add("F"); keys.add("W"); mapper = new TransformingMapper(new LowerCaseTransformer(), keys); } }