package org.simpleflatmapper.test.map.context; import org.junit.Before; import org.junit.Test; import org.simpleflatmapper.map.MappingContext; import org.simpleflatmapper.test.map.SampleFieldKey; import org.simpleflatmapper.map.context.KeySourceGetter; import org.simpleflatmapper.map.context.MappingContextFactory; import org.simpleflatmapper.map.context.MappingContextFactoryBuilder; import org.simpleflatmapper.map.context.impl.BreakDetectorMappingContextFactory; import org.simpleflatmapper.map.context.impl.ValuedMappingContextFactory; import org.simpleflatmapper.util.ConstantSupplier; import java.util.Arrays; import static org.junit.Assert.*; public class MappingContextFactoryBuilderTest { private MappingContextFactoryBuilder<Object[], SampleFieldKey> builder; @Before public void setUp() { builder = new MappingContextFactoryBuilder<Object[], SampleFieldKey>(getKeySourceGetter()); } @Test public void testEmpty() { assertTrue(builder.hasNoKeys()); assertSame(MappingContext.EMPTY_FACTORY, builder.newFactory()); assertNotNull(builder.toString()); } @Test public void testSuppliers() { builder.addSupplier(1, new ConstantSupplier<String>("hh")); assertTrue(builder.hasNoKeys()); MappingContextFactory<Object[]> mappingContextFactory = builder.newFactory(); assertTrue(mappingContextFactory instanceof ValuedMappingContextFactory); assertEquals("hh", mappingContextFactory.newContext().context(1)); assertNull(mappingContextFactory.newContext().context(0)); } @Test public void testKeys() throws Exception { builder.addKey(new SampleFieldKey("k1", 0)); assertFalse(builder.hasNoKeys()); MappingContextFactory<Object[]> mappingContextFactory = builder.newFactory(); assertTrue(mappingContextFactory instanceof BreakDetectorMappingContextFactory); assertNull(mappingContextFactory.newContext().context(0)); assertTrue(builder.nullChecker().test(new Object[] { null})); assertFalse(builder.nullChecker().test(new Object[] { 123 })); } @Test public void testKeysAndSuppliers() { builder.addSupplier(1, new ConstantSupplier<String>("hh")); builder.addKey(new SampleFieldKey("k1", 0)); assertFalse(builder.hasNoKeys()); MappingContextFactory<Object[]> mappingContextFactory = builder.newFactory(); assertTrue(mappingContextFactory instanceof BreakDetectorMappingContextFactory); assertEquals("hh", mappingContextFactory.newContext().context(1)); assertNull(mappingContextFactory.newContext().context(0)); } @Test public void testKeysWithSubBuilder() { builder.addKey(new SampleFieldKey("k1", 0)); MappingContextFactoryBuilder<Object[], SampleFieldKey> subBuilder = builder.newBuilder(Arrays.asList(new SampleFieldKey("k2", 3)), null); subBuilder.newBuilder(Arrays.asList(new SampleFieldKey("k3", 6)), null); MappingContextFactory<Object[]> mappingContextFactory = builder.newFactory(); MappingContext<Object[]> mappingContext = mappingContextFactory.newContext(); } private KeySourceGetter<SampleFieldKey, Object[]> getKeySourceGetter() { return new KeySourceGetter<SampleFieldKey, Object[]>() { @Override public Object getValue(SampleFieldKey key, Object[] source) throws Exception { return source[key.getIndex()]; } }; } }