| /* |
| * Copyright 2008 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.resource.impl; |
| |
| import com.google.gwt.core.ext.TreeLogger; |
| import com.google.gwt.dev.resource.Resource; |
| |
| import java.util.Map; |
| |
| import static com.google.gwt.dev.resource.impl.ResourceOracleImplTest.assertResourcesEqual; |
| |
| /** |
| * Tests {@link ResourceOracleImpl} using the real class path. |
| * |
| */ |
| public class ResourceOracleImplRealClasspathTest extends |
| AbstractResourceOrientedTestBase { |
| |
| private static PathPrefix makeJunitPrefix() { |
| return new PathPrefix("junit/framework/", new ResourceFilter() { |
| public boolean allows(String path) { |
| return path.endsWith("TestCase.class"); |
| } |
| }); |
| } |
| |
| private static PathPrefix makeThisClassPrefix() { |
| return new PathPrefix("com/google/gwt/dev/resource/impl/", |
| new ResourceFilter() { |
| public boolean allows(String path) { |
| return path.endsWith("ResourceOracleImplRealClasspathTest.class"); |
| } |
| }); |
| } |
| |
| private static PathPrefix makeThisClassPrefixPlus() { |
| return new PathPrefix("com/google/gwt/dev/resource/impl/", |
| new ResourceFilter() { |
| public boolean allows(String path) { |
| return path.endsWith("ResourceOracleImpl.class") |
| || path.endsWith("ResourceOracleImplRealClasspathTest.class"); |
| } |
| }); |
| } |
| |
| private final TreeLogger logger = createTestTreeLogger(); |
| |
| private final ResourceOracleImpl resourceOracle = new ResourceOracleImpl( |
| logger); |
| |
| public void testBasic() { |
| PathPrefixSet pathPrefixSet = new PathPrefixSet(); |
| pathPrefixSet.add(makeJunitPrefix()); |
| pathPrefixSet.add(makeThisClassPrefix()); |
| resourceOracle.setPathPrefixes(pathPrefixSet); |
| ResourceOracleImpl.refresh(logger, resourceOracle); |
| Map<String, Resource> resourceMap = resourceOracle.getResourceMap(); |
| assertEquals(2, resourceMap.size()); |
| } |
| |
| public void testRefresh() { |
| PathPrefixSet pathPrefixSet = new PathPrefixSet(); |
| pathPrefixSet.add(makeJunitPrefix()); |
| pathPrefixSet.add(makeThisClassPrefix()); |
| resourceOracle.setPathPrefixes(pathPrefixSet); |
| ResourceOracleImpl.refresh(logger, resourceOracle); |
| Map<String, Resource> resourceMap = resourceOracle.getResourceMap(); |
| assertEquals(2, resourceMap.size()); |
| |
| // Plain refresh should have no effect. |
| ResourceOracleImpl.refresh(logger, resourceOracle); |
| assertResourcesEqual(resourceMap, resourceOracle.getResourceMap()); |
| |
| // Setting same path entries should have no effect. |
| resourceOracle.setPathPrefixes(pathPrefixSet); |
| ResourceOracleImpl.refresh(logger, resourceOracle); |
| assertResourcesEqual(resourceMap, resourceOracle.getResourceMap()); |
| |
| // Setting identical path entries should have no effect. |
| pathPrefixSet = new PathPrefixSet(); |
| pathPrefixSet.add(makeJunitPrefix()); |
| pathPrefixSet.add(makeThisClassPrefix()); |
| resourceOracle.setPathPrefixes(pathPrefixSet); |
| ResourceOracleImpl.refresh(logger, resourceOracle); |
| assertResourcesEqual(resourceMap, resourceOracle.getResourceMap()); |
| |
| // Setting identical result should have no effect. |
| pathPrefixSet.add(makeJunitPrefix()); |
| ResourceOracleImpl.refresh(logger, resourceOracle); |
| assertResourcesEqual(resourceMap, resourceOracle.getResourceMap()); |
| |
| // Actually change the working set. |
| pathPrefixSet.add(makeThisClassPrefixPlus()); |
| ResourceOracleImpl.refresh(logger, resourceOracle); |
| assertEquals(3, resourceOracle.getResourceMap().size()); |
| } |
| } |