Package com.google.gwt.inject.rebind.resolution

Source Code of com.google.gwt.inject.rebind.resolution.PathFinderTest

/*
* Copyright 2011 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.inject.rebind.resolution;

import static com.google.gwt.inject.rebind.resolution.TestUtils.bar;
import static com.google.gwt.inject.rebind.resolution.TestUtils.baz;
import static com.google.gwt.inject.rebind.resolution.TestUtils.foo;

import com.google.gwt.inject.rebind.GinjectorBindings;
import com.google.gwt.inject.rebind.binding.Dependency;

import junit.framework.TestCase;

import org.easymock.EasyMock;
import org.easymock.IMocksControl;

public class PathFinderTest extends TestCase {

  private static final String SOURCE = "dummy";

  private IMocksControl control;
  private GinjectorBindings origin;
 
  @Override
  protected void setUp() throws Exception {
    control = EasyMock.createControl();
    origin = control.createMock(GinjectorBindings.class);
  }
 
  public void testFindAnyPath() throws Exception {
    DependencyGraph graph = new DependencyGraph.Builder(origin)
        .addEdge(new Dependency(Dependency.GINJECTOR, foo(), SOURCE))
        .addEdge(new Dependency(foo(), bar(), SOURCE))
        .addEdge(new Dependency(bar(), baz(), SOURCE))
        .build();
    control.replay();
    assertEquals(
        TestUtils.dependencyList(
            new Dependency(Dependency.GINJECTOR, foo(), SOURCE),
            new Dependency(foo(), bar(), SOURCE),
            new Dependency(bar(), baz(), SOURCE)),
        new PathFinder().onGraph(graph)
            .addRoots(Dependency.GINJECTOR)
            .addDestinations(baz()).findShortestPath());
    control.verify();
  }
 
  public void testFindShortestPath() throws Exception {
    DependencyGraph graph = new DependencyGraph.Builder(origin)
        .addEdge(new Dependency(Dependency.GINJECTOR, foo(), SOURCE))
        .addEdge(new Dependency(foo(), bar(), SOURCE))
        .addEdge(new Dependency(bar(), baz(), SOURCE))
        .addEdge(new Dependency(foo(), baz(), SOURCE)) // we should use the "shortcut" to baz
        .build();
    control.replay();
    assertEquals(
        TestUtils.dependencyList(
            new Dependency(Dependency.GINJECTOR, foo(), SOURCE),
            new Dependency(foo(), baz(), SOURCE)),
        new PathFinder().onGraph(graph)
            .addRoots(Dependency.GINJECTOR)
            .addDestinations(baz()).findShortestPath());
    control.verify();
  }
 
  public void testFindShortestPath_MultipleDestinations() throws Exception {
    DependencyGraph graph = new DependencyGraph.Builder(origin)
        .addEdge(new Dependency(Dependency.GINJECTOR, foo(), SOURCE))
        .addEdge(new Dependency(foo(), bar(), SOURCE))
        .addEdge(new Dependency(bar(), baz(), SOURCE))
        .build();
    control.replay();
    assertEquals(
        TestUtils.dependencyList(
            new Dependency(Dependency.GINJECTOR, foo(), SOURCE),
            new Dependency(foo(), bar(), SOURCE)),
        new PathFinder().onGraph(graph)
            .addRoots(Dependency.GINJECTOR)
            .addDestinations(baz(), bar()).findShortestPath());
    control.verify();
  }
 
  public void testPathInUnresolved() throws Exception {
    DependencyGraph graph = new DependencyGraph.Builder(origin)
        .addEdge(new Dependency(Dependency.GINJECTOR, foo(), SOURCE))
        .addEdge(new Dependency(Dependency.GINJECTOR, baz(), SOURCE))
        .addEdge(new Dependency(foo(), bar(), SOURCE))
        .addEdge(new Dependency(bar(), baz(), SOURCE))
        .addEdge(new Dependency(foo(), baz(), SOURCE))
        .build();
    control.replay();
    assertEquals(
        TestUtils.dependencyList(
            new Dependency(Dependency.GINJECTOR, baz(), SOURCE)),
        new PathFinder().onGraph(graph)
            .addRoots(Dependency.GINJECTOR)
            .addDestinations(baz()).findShortestPath());
    control.verify();
  }
 
  public void testRequiredPath_OptionalInPath() throws Exception {
    DependencyGraph graph = new DependencyGraph.Builder(origin)
        .addEdge(new Dependency(Dependency.GINJECTOR, foo(), SOURCE))
        .addEdge(new Dependency(foo(), bar(), SOURCE))
        .addEdge(new Dependency(bar(), baz(), SOURCE))
        .addEdge(new Dependency(foo(), baz(), true, false, SOURCE)) // avoid optional short-cut
        .build();
    control.replay();
    assertEquals(
        TestUtils.dependencyList(
            new Dependency(Dependency.GINJECTOR, foo(), SOURCE),
            new Dependency(foo(), bar(), SOURCE),
            new Dependency(bar(), baz(), SOURCE)),
        new PathFinder().onGraph(graph)
            .addRoots(Dependency.GINJECTOR)
            .addDestinations(baz())
            .withOnlyRequiredEdges(true).findShortestPath());
    control.verify();
  }
 
  public void testRequiredPath_OptionalInUnresolved() throws Exception {
    DependencyGraph graph = new DependencyGraph.Builder(origin)
        .addEdge(new Dependency(Dependency.GINJECTOR, foo(), SOURCE))
        .addEdge(new Dependency(Dependency.GINJECTOR, baz(), true, false, SOURCE))
        .addEdge(new Dependency(foo(), bar(), SOURCE))
        .addEdge(new Dependency(bar(), baz(), SOURCE))
        .build();
    control.replay();
    assertEquals(
        TestUtils.dependencyList(
            new Dependency(Dependency.GINJECTOR, foo(), SOURCE),
            new Dependency(foo(), bar(), SOURCE),
            new Dependency(bar(), baz(), SOURCE)),
        new PathFinder().onGraph(graph)
            .addRoots(Dependency.GINJECTOR)
            .addDestinations(baz())
            .withOnlyRequiredEdges(true).findShortestPath());
    control.verify();
  }
}
TOP

Related Classes of com.google.gwt.inject.rebind.resolution.PathFinderTest

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.