/* * Copyright 2010 Google Inc. * * 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 com.google.gwt.dev.cfg; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.dev.util.UnitTestTreeLogger; import junit.framework.TestCase; /** * Test for the module def loading */ public class ModuleDefLoaderTest extends TestCase { /** * Test of merging multiple modules in the same package space. * This exercises the interaction of include, exclude, and skip attributes. */ public void testModuleMerging() throws Exception { TreeLogger logger = TreeLogger.NULL; ModuleDef one = ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.dev.cfg.testdata.merging.One", false); assertNotNull(one.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InOne.java")); assertNotNull(one.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Shared.java")); assertNull(one.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InTwo.java")); assertNull(one.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Toxic.java")); ModuleDef two = ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.dev.cfg.testdata.merging.Two", false); assertNotNull(two.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InOne.java")); assertNotNull(two.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Shared.java")); assertNotNull(two.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InTwo.java")); assertNull(two.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Toxic.java")); ModuleDef three = ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.dev.cfg.testdata.merging.Three", false); assertNotNull(three.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InOne.java")); assertNotNull(three.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Shared.java")); assertNull(three.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InTwo.java")); assertNull(three.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Toxic.java")); } /** * The top level module has an invalid name. */ public void testModuleNamingInvalid() { UnitTestTreeLogger.Builder builder = new UnitTestTreeLogger.Builder(); builder.setLowestLogLevel(TreeLogger.ERROR); builder.expectError("Invalid module name: 'com.google.gwt.dev.cfg.testdata.naming.Invalid..Foo'", null); UnitTestTreeLogger logger = builder.createLogger(); try { ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.dev.cfg.testdata.naming.Invalid..Foo", false); fail("Expected exception from invalid module name."); } catch (UnableToCompleteException expected) { } logger.assertLogEntriesContainExpected(); } public void testModuleNamingValid() throws Exception { TreeLogger logger = TreeLogger.NULL; //TreeLogger logger = new PrintWriterTreeLogger(); ModuleDef module; module = ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.dev.cfg.testdata.naming.Foo-test", false); assertNotNull(module.findSourceFile("com/google/gwt/dev/cfg/testdata/naming/client/Mock.java")); module = ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.dev.cfg.testdata.naming.7Foo", false); assertNotNull(module.findSourceFile("com/google/gwt/dev/cfg/testdata/naming/client/Mock.java")); module = ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.dev.cfg.testdata.naming.Nested7Foo", false); assertNotNull(module.findSourceFile("com/google/gwt/dev/cfg/testdata/naming/client/Mock.java")); module = ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.dev.cfg.testdata.naming.Nested7Foo", false); assertNotNull(module.findSourceFile("com/google/gwt/dev/cfg/testdata/naming/client/Mock.java")); } /** * The top level module has a valid name, but the inherited one does not. */ public void testModuleNestedNamingInvalid() { UnitTestTreeLogger.Builder builder = new UnitTestTreeLogger.Builder(); builder.setLowestLogLevel(TreeLogger.ERROR); builder.expectError("Invalid module name: 'com.google.gwt.dev.cfg.testdata.naming.Invalid..Foo'", null); UnitTestTreeLogger logger = builder.createLogger(); try { ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.dev.cfg.testdata.naming.NestedInvalid", false); fail("Expected exception from invalid module name."); } catch (UnableToCompleteException expected) { } logger.assertLogEntriesContainExpected(); } }