Package org.impalaframework.module.source

Source Code of org.impalaframework.module.source.IncrementalModuleDefinitionSourceTest

/*
* Copyright 2007-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/

package org.impalaframework.module.source;

import java.util.Arrays;
import java.util.List;

import junit.framework.TestCase;

import org.impalaframework.exception.ConfigurationException;
import org.impalaframework.module.ModuleDefinition;
import org.impalaframework.module.RootModuleDefinition;
import org.impalaframework.module.source.IncrementalModuleDefinitionSource;
import org.impalaframework.module.source.InternalModuleDefinitionSource;
import org.impalaframework.module.type.TypeReaderRegistry;
import org.impalaframework.module.type.TypeReaderRegistryFactory;
import org.impalaframework.resolver.StandaloneModuleLocationResolver;

public class IncrementalModuleDefinitionSourceTest extends TestCase {
   
    private RootModuleDefinition rootModuleDefinition;
    private StandaloneModuleLocationResolver resolver;
    private TypeReaderRegistry typeReaderRegistry;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        this.typeReaderRegistry = TypeReaderRegistryFactory.getTypeReaderRegistry();
    }

    private void setExistingDefinition(String... moduleNames) {
        resolver = new StandaloneModuleLocationResolver();
        InternalModuleDefinitionSource moduleDefinitionSource = new InternalModuleDefinitionSource(typeReaderRegistry, resolver, moduleNames, true);
        rootModuleDefinition = moduleDefinitionSource.getModuleDefinition();
        System.out.println(rootModuleDefinition);
    }

    public void testGetSingleModulesToLoad() {
        setExistingDefinition("impala-core", "sample-module2");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "sample-module4");
        moduleDefinitionSource.getModuleDefinition();
        List<String> modulesToLoad = moduleDefinitionSource.getModulesToLoad();
        assertEquals(1, modulesToLoad.size());
        assertTrue(modulesToLoad.contains("sample-module4"));
    }
   
    public void testGetNoModulesToLoad() {
        setExistingDefinition("sample-module4");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "sample-module4");
        assertEquals(rootModuleDefinition, moduleDefinitionSource.getModuleDefinition());
        assertTrue(moduleDefinitionSource.getModulesToLoad().isEmpty());
    }
   
    public void testGetMultipleModulesToLoad() {
        setExistingDefinition("impala-core");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "sample-module4");
        moduleDefinitionSource.getModuleDefinition();
        List<String> modulesToLoad = moduleDefinitionSource.getModulesToLoad();
        assertEquals(2, modulesToLoad.size());
        assertTrue(modulesToLoad.contains("sample-module4"));
        assertTrue(modulesToLoad.contains("sample-module2"));
    }
   
    public void testLoadFiveAndSix() {
        setExistingDefinition("impala-core");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "sample-module6");
        RootModuleDefinition root = moduleDefinitionSource.getModuleDefinition();
        assertTrue(root.hasSibling("sample-module5"));
       
        ModuleDefinition definition5 = root.findChildDefinition("sample-module5", true);
        assertNotNull(definition5);
        assertFalse(root.hasSibling("sample-module6"));
       
        ModuleDefinition definition6 = root.findChildDefinition("sample-module6", true);
        assertNotNull(definition6);
        assertNotNull(definition5.findChildDefinition("sample-module6", true));
        List<String> asList = definition6.getDependentModuleNames(false);
        assertEquals(Arrays.asList("sample-module5", "sample-module4"), asList);
       
        List<String> modulesToLoad = moduleDefinitionSource.getModulesToLoad();
        assertEquals(2, modulesToLoad.size());
        assertTrue(modulesToLoad.contains("sample-module5"));
        assertTrue(modulesToLoad.contains("sample-module6"));
    }
   
    public void testLoadFive() {
        setExistingDefinition("impala-core");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "sample-module5");
       
        RootModuleDefinition root = moduleDefinitionSource.getModuleDefinition();
        assertTrue(root.hasSibling("sample-module5"));
       
        List<String> modulesToLoad = moduleDefinitionSource.getModulesToLoad();
        assertEquals(1, modulesToLoad.size());
        assertTrue(modulesToLoad.contains("sample-module5"));
    }
   
    public void testLoadSix() {
        setExistingDefinition("impala-core", "sample-module5");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "sample-module6");

        RootModuleDefinition root = moduleDefinitionSource.getModuleDefinition();
        assertTrue(root.hasSibling("sample-module5"));
       
        ModuleDefinition definition5 = root.findChildDefinition("sample-module5", true);
        assertNotNull(definition5);
        ModuleDefinition definition6 = definition5.findChildDefinition("sample-module6", true);
        assertNotNull(definition6);
       
        List<String> modulesToLoad = moduleDefinitionSource.getModulesToLoad();
        assertEquals(1, modulesToLoad.size());
        assertTrue(modulesToLoad.contains("sample-module6"));

        List<String> asList = definition6.getDependentModuleNames(false);
        assertEquals(Arrays.asList("sample-module5", "sample-module4"), asList);
    }
   
    public void testGetModuleDefinitionFourFromCore() {
        setExistingDefinition("impala-core");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "sample-module4");
        checkDefinition(moduleDefinitionSource);
    }

    public void testGetModuleDefinitionFourFromTwo() {
        setExistingDefinition("impala-core", "sample-module2");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "sample-module4");
        checkDefinition(moduleDefinitionSource);
    }

    public void testGetModuleDefinitionFourFromFour() {
        setExistingDefinition("impala-core", "sample-module2", "sample-module4");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "sample-module4");
        checkDefinition(moduleDefinitionSource);
    }

    public void testGetModuleDefinitionDuffFromFour() {
        setExistingDefinition("impala-core", "sample-module2");
        IncrementalModuleDefinitionSource moduleDefinitionSource = new IncrementalModuleDefinitionSource(resolver, typeReaderRegistry, rootModuleDefinition, "duff-module");
        try {
            moduleDefinitionSource.getModuleDefinition();
        } catch (ConfigurationException e) {
            assertTrue(e.getMessage().contains("Application is using internally defined module structure, but no module.properties file is present on the classpath for module 'duff-module'"));
        }
    }

    private void checkDefinition(
            IncrementalModuleDefinitionSource moduleDefinitionSource) {
        RootModuleDefinition newDefinition = moduleDefinitionSource.getModuleDefinition();
        System.out.println("New definition: " + newDefinition);
       
        ModuleDefinition module2 = newDefinition.findChildDefinition("sample-module2", true);
        assertNotNull(module2);
        ModuleDefinition module4 = newDefinition.findChildDefinition("sample-module4", true);
        assertNotNull(module4);
       
        assertTrue(newDefinition.getChildModuleDefinitions().contains(module2));
        assertEquals(1, newDefinition.getChildModuleDefinitions().size());
        assertTrue(module2.getChildModuleDefinitions().contains(module4));
        assertEquals(1, module2.getChildModuleDefinitions().size());
        assertTrue(module4.getChildModuleDefinitions().isEmpty());
    }
}
TOP

Related Classes of org.impalaframework.module.source.IncrementalModuleDefinitionSourceTest

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.