Package com.github.jsr330.spi.config.builder

Source Code of com.github.jsr330.spi.config.builder.DefaultBinderConditionalTest

package com.github.jsr330.spi.config.builder;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import java.lang.annotation.Annotation;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import com.github.jsr330.instance.TypeContainer;
import com.github.jsr330.instance.TypeContainer.InstanceMode;
import com.github.jsr330.spi.ClassInjector;
import com.github.jsr330.spi.TypeConfig;

public class DefaultBinderConditionalTest {
   
    InitialBinder<Object> defaultBinder;
    BindingCondition<?> nonConfirming = new BindingCondition<Object>() {
       
        @Override
        public boolean fulfilled(ClassInjector injector, Class<Object> type, Map<String, Class<? extends Object>[]> inheritanceTree, Annotation qualifier,
                ClassLoader classLoader) {
            return false;
        }
       
    };
    BindingCondition<?> confirming = new BindingCondition<Object>() {
       
        @Override
        public boolean fulfilled(ClassInjector injector, Class<Object> type, Map<String, Class<? extends Object>[]> inheritanceTree, Annotation qualifier,
                ClassLoader classLoader) {
            return true;
        }
       
    };
   
    @Before
    public void init() {
        defaultBinder = new DefaultBinder<Object>();
    }
   
    @Test
    public void nullConditional() {
        try {
            defaultBinder.instance(TestInterface.class).as(TestImplementation1.class).when(null);
            fail();
        } catch (NullPointerException exception) {
        } catch (Throwable t) {
            fail();
        }
    }
   
    @SuppressWarnings("unchecked")
    @Test
    public void conditionalInterfaceNonConfirming() {
        TypeConfig config = defaultBinder.instance(TestInterface.class).as(TestImplementation1.class).when((BindingCondition<TestInterface>) nonConfirming)
                .build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestInterface.class, null, null, null);
        assertNull(container);
    }
   
    @SuppressWarnings("unchecked")
    @Test
    public void conditionalInterfaceConfirming() {
        TypeConfig config = defaultBinder.instance(TestInterface.class).as(TestImplementation1.class).when((BindingCondition<TestInterface>) confirming)
                .build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestInterface.class, null, null, null);
        assertNotNull(container);
        assertEquals(TestImplementation1.class, container.getType());
        assertFalse(container.isSingleton());
        assertEquals(InstanceMode.CONSTRUCTOR, container.getInstanceMode());
    }
   
    @SuppressWarnings("unchecked")
    @Test
    public void conditionalSingletonInterfaceNonConfirming() {
        TypeConfig config = defaultBinder.instance(TestInterface.class).asSingleton(TestImplementation1.class)
                .when((BindingCondition<TestInterface>) nonConfirming).build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestInterface.class, null, null, null);
        assertNull(container);
    }
   
    @SuppressWarnings("unchecked")
    @Test
    public void conditionalSingletonInterfaceConfirming() {
        TypeConfig config = defaultBinder.instance(TestInterface.class).asSingleton(TestImplementation1.class)
                .when((BindingCondition<TestInterface>) confirming).build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestInterface.class, null, null, null);
        assertNotNull(container);
        assertEquals(TestImplementation1.class, container.getType());
        assertTrue(container.isSingleton());
        assertEquals(InstanceMode.CONSTRUCTOR, container.getInstanceMode());
    }
   
    @SuppressWarnings("unchecked")
    @Test
    public void conditionalSimpleTypeNonConfirming() {
        TypeConfig config = defaultBinder.instance(TestImplementation1.class).as(TestImplementation1.class)
                .when((BindingCondition<TestImplementation1>) nonConfirming).build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestImplementation1.class, null, null, null);
        assertNull(container);
    }
   
    @SuppressWarnings("unchecked")
    @Test
    public void conditionalSimpleTypeConfirming() {
        TypeConfig config = defaultBinder.instance(TestImplementation1.class).as(TestImplementation1.class)
                .when((BindingCondition<TestImplementation1>) confirming).build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestImplementation1.class, null, null, null);
        assertNotNull(container);
        assertEquals(TestImplementation1.class, container.getType());
        assertFalse(container.isSingleton());
        assertEquals(InstanceMode.CONSTRUCTOR, container.getInstanceMode());
    }
   
    @SuppressWarnings("unchecked")
    @Test
    public void conditionalSingletonSimpleTypeNonConfirming() {
        TypeConfig config = defaultBinder.instance(TestImplementation1.class).asSingleton(TestImplementation1.class)
                .when((BindingCondition<TestImplementation1>) nonConfirming).build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestImplementation1.class, null, null, null);
        assertNull(container);
    }
   
    @SuppressWarnings("unchecked")
    @Test
    public void conditionalSingletonSimpleTypeConfirming() {
        TypeConfig config = defaultBinder.instance(TestImplementation1.class).asSingleton(TestImplementation1.class)
                .when((BindingCondition<TestImplementation1>) confirming).build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestImplementation1.class, null, null, null);
        assertNotNull(container);
        assertEquals(TestImplementation1.class, container.getType());
        assertTrue(container.isSingleton());
        assertEquals(InstanceMode.CONSTRUCTOR, container.getInstanceMode());
    }
   
}
TOP

Related Classes of com.github.jsr330.spi.config.builder.DefaultBinderConditionalTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.