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

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

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.assertTrue;
import static org.junit.Assert.fail;

import javax.inject.Provider;

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.TypeConfig;

public class DefaultBinderTypedTest {
   
    InitialBinder<Object> defaultBinder;
   
    @Before
    public void init() {
        defaultBinder = new DefaultBinder<Object>();
    }
   
    @Test
    public void bindingIncomplete() {
        try {
            defaultBinder.instance(TestInterface.class).build();
            fail();
        } catch (BinderException e) {
        } catch (Throwable t) {
            fail();
        }
    }
   
    @Test
    public void interfaceAsImplementation() {
        try {
            defaultBinder.instance(TestInterface.class).as(TestInterface.class);
            fail();
        } catch (BinderException e) {
        } catch (Throwable t) {
            fail();
        }
    }
   
    @Test
    public void interfaceAsImplementationAndSingleton() {
        try {
            defaultBinder.instance(TestInterface.class).asSingleton(TestInterface.class);
            fail();
        } catch (BinderException e) {
        } catch (Throwable t) {
            fail();
        }
    }
   
    @Test
    public void interfaceAsSingleton() {
        try {
            defaultBinder.instance(TestInterface.class).asSingleton();
            fail();
        } catch (BinderException e) {
        } catch (Throwable t) {
            fail();
        }
    }
   
    @Test
    public void simpleBinding() {
        TypeConfig config = defaultBinder.instance(TestInterface.class).as(TestImplementation1.class).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());
    }
   
    @Test
    public void simpleBindingAsSingleton() {
        TypeConfig config = defaultBinder.instance(TestInterface.class).asSingleton(TestImplementation1.class).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());
    }
   
    @Test
    public void simpleTypeAsSingleton() {
        TypeConfig config = defaultBinder.instance(TestImplementation1.class).asSingleton().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());
    }
   
    @Test
    public void simpleType() {
        TypeConfig config = defaultBinder.instance(TestImplementation1.class).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());
    }
   
    @Test
    public void simpleTypeInheritance() {
        TypeConfig config = defaultBinder.instance(TestImplementation1.class).as(TestImplementation2.class).build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestImplementation1.class, null, null, null);
        assertNotNull(container);
        assertEquals(TestImplementation2.class, container.getType());
        assertFalse(container.isSingleton());
        assertEquals(InstanceMode.CONSTRUCTOR, container.getInstanceMode());
    }
   
    @Test
    public void interfaceWithNullProvider() {
        try {
            defaultBinder.instance(TestInterface.class).with(null);
            fail();
        } catch (NullPointerException exception) {
        } catch (Throwable t) {
            fail();
        }
    }
   
    @Test
    public void simpleTypeWithNullProvider() {
        try {
            defaultBinder.instance(TestImplementation1.class).with(null);
            fail();
        } catch (NullPointerException exception) {
        } catch (Throwable t) {
            fail();
        }
    }
   
    @Test
    public void interfaceWithProvider() {
        TypeConfig config = defaultBinder.instance(TestInterface.class).with(new Provider<TestInterface>() {
           
            @Override
            public TestInterface get() {
                return new TestImplementation1();
            }
           
        }).build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestInterface.class, null, null, null);
        assertNotNull(container);
        assertNotNull(container.getProvider());
        assertFalse(container.isSingleton());
        assertEquals(InstanceMode.PROVIDER, container.getInstanceMode());
    }
   
    @Test
    public void simpleTypeWithProvider() {
        TypeConfig config = defaultBinder.instance(TestImplementation1.class).with(new Provider<TestImplementation1>() {
           
            @Override
            public TestImplementation1 get() {
                return new TestImplementation1();
            }
           
        }).build();
        TypeContainer container;
       
        container = config.getTypeContainer(null, TestImplementation1.class, null, null, null);
        assertNotNull(container);
        assertNotNull(container.getProvider());
        assertFalse(container.isSingleton());
        assertEquals(InstanceMode.PROVIDER, container.getInstanceMode());
    }
   
}
TOP

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

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.