Package org.impalaframework.module.source

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

/*
* 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.definition.ModuleTypes;
import org.impalaframework.resolver.StandaloneModuleLocationResolver;
import org.springframework.core.io.ClassPathResource;

public class InternalXmlModuleDefinitionSourceTest extends TestCase {
   
    private InternalXmlModuleDefinitionSource moduleDefinitionSource;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        moduleDefinitionSource = new InternalXmlModuleDefinitionSource(new StandaloneModuleLocationResolver());
    }
   
    public void testGetModuleNames() throws Exception {
    String[] moduleNames = moduleDefinitionSource.getModuleNames(" name1, name2\tname3\n #commented name4\r\nname5, name6 ");
    System.out.println(Arrays.asList(moduleNames));
    assertEquals(5, moduleNames.length);
   
    assertEquals("name1", moduleNames[0]);
    assertEquals("name2", moduleNames[1]);
    assertEquals("name3", moduleNames[2]);
    assertEquals("name5", moduleNames[3]);
    assertEquals("name6", moduleNames[4]);
  }
   
    public void testUncommentedNames() throws Exception {
    List<String> uncommentedNames = moduleDefinitionSource.uncommentedLines(Arrays.asList("name1", "#commented 1", "name2", " #commented 2"));
    assertEquals(2, uncommentedNames.size());
   
    assertEquals("name1", uncommentedNames.get(0));
    assertEquals("name2", uncommentedNames.get(1));
  }
   
    public void testGetModuleDefinitionGraph() {
        moduleDefinitionSource.setResource(new ClassPathResource("xmlinternal/modulegraph.xml"));
        RootModuleDefinition moduleDefinition = moduleDefinitionSource.getModuleDefinition();
        System.out.println(moduleDefinition);
       
        ModuleDefinition definition1 = getDefinition(moduleDefinition, "sample-module1");
        assertEquals(ModuleTypes.APPLICATION, definition1.getType());
        assertEquals(Arrays.asList(new String[0]), definition1.getConfigLocations());
       
        ModuleDefinition definition2 = getDefinition(moduleDefinition, "sample-module2");
        getDefinition(definition2, "sample-module3");
        getDefinition(definition2, "sample-module4");
       
        ModuleDefinition definition5 = moduleDefinition.getSiblingModule("sample-module5");
        assertNotNull(definition5);
       
        ModuleDefinition definition = getDefinition(definition5, "sample-module6");
        assertEquals(Arrays.asList("sample-module3,sample-module4,sample-module5".split(",")), definition.getDependentModuleNames(false));
    }
   
    public void testGetModuleDefinition() {
        moduleDefinitionSource.setResource(new ClassPathResource("xmlinternal/moduledefinition.xml"));
        RootModuleDefinition moduleDefinition = moduleDefinitionSource.getModuleDefinition();
        System.out.println(moduleDefinition);
       
        assertEquals(Arrays.asList(new String[]{"parentTestContext.xml"}), moduleDefinition.getConfigLocations());
        assertEquals(2, moduleDefinition.getChildModuleDefinitions().size());
       
        ModuleDefinition definition1 = getDefinition(moduleDefinition, "sample-module1");
        assertEquals(ModuleTypes.APPLICATION, definition1.getType());
        assertEquals(Arrays.asList(new String[0]), definition1.getConfigLocations());
       
        ModuleDefinition definition2 = getDefinition(moduleDefinition, "sample-module2");
        assertEquals(ModuleTypes.APPLICATION, definition2.getType());
        assertEquals(Arrays.asList(new String[0]), definition2.getConfigLocations());
       
        ModuleDefinition definition3 = getDefinition(definition2, "sample-module3");
        assertEquals(ModuleTypes.APPLICATION, definition3.getType());
        assertEquals(Arrays.asList(new String[0]), definition3.getConfigLocations());
       
        ModuleDefinition definition4 = getDefinition(definition2, "sample-module4");
        assertEquals(Arrays.asList(new String[0]), definition4.getConfigLocations());
    }

    public void testNoNames() throws Exception {
        try {
            moduleDefinitionSource.setResource(new ClassPathResource("xmlinternal/nonames.xml"));
            moduleDefinitionSource.getModuleDefinition();
            fail();
        } catch (ConfigurationException e) {
            assertEquals("Resource 'class path resource [xmlinternal/nonames.xml]' contains a non-empty 'names' element, which is illegal when using InternalModuleDefinitionSource", e.getMessage());
        }
    }

    public void testInvalidModules() throws Exception {
        try {
            moduleDefinitionSource.setResource(new ClassPathResource("xmlinternal/invalidmodule.xml"));
            moduleDefinitionSource.getModuleDefinition();
            fail();
        } catch (ConfigurationException e) {
            assertEquals("Resource 'class path resource [xmlinternal/invalidmodule.xml]' contains no new properties for module 'sample-module4'. Has this module been declared in the 'names' element?", e.getMessage());
        }
    }
   
    private ModuleDefinition getDefinition(ModuleDefinition moduleDefinition,
            String moduleName) {
        ModuleDefinition def = moduleDefinition.getChildModuleDefinition(moduleName);
        assertNotNull(def);
        return def;
    }

}
TOP

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

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.