/******************************************************************************* * Copyright (c) 2015 EclipseSource Munich and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Philip Langer - initial API and implementation * Michael Borkowski - rewrite using Mockito *******************************************************************************/ package org.eclipse.emf.compare.ide.ui.tests.logical.resolver; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyZeroInteractions; import com.google.common.base.Optional; import com.google.common.collect.Sets; import com.google.common.eventbus.EventBus; import java.util.Collections; import org.eclipse.emf.compare.ide.ui.internal.logical.resolver.DependencyFoundEvent; import org.eclipse.emf.compare.ide.ui.internal.logical.resolver.DependencyGraphUpdater; import org.eclipse.emf.compare.ide.ui.internal.logical.resolver.ResolvedEvent; import org.eclipse.emf.compare.ide.ui.internal.logical.resolver.ResourceRemovedEvent; import org.eclipse.emf.compare.internal.utils.Graph; import org.junit.Before; import org.junit.Test; @SuppressWarnings({"nls", "restriction", "cast", "unchecked" }) public class DependencyGraphUpdaterTest { Graph<String> graph; DependencyGraphUpdater<String> sut; @Before public void setUp() { graph = (Graph<String>)mock(Graph.class); sut = new DependencyGraphUpdater<String>(graph, new EventBus()); } @Test(expected = NullPointerException.class) public void testInstantiationWithNullGraph() { new DependencyGraphUpdater<String>(null, new EventBus()); } @Test(expected = NullPointerException.class) public void testInstantiationWithNullEventBus() { new DependencyGraphUpdater<String>(new Graph<String>(), null); } @Test public void testInstantiationWithoutException() { new DependencyGraphUpdater<String>(new Graph<String>(), new EventBus()); } @Test public void testInstantiationDoesNotModifyGraph() { verifyZeroInteractions(graph); } @Test public void testRecordNodeAddsNodeToGraph() { ResolvedEvent<String> event1, event2; event1 = new ResolvedEvent<String>("1"); sut.recordNode(event1); event2 = new ResolvedEvent<String>("2"); sut.recordNode(event2); verify(graph).add(event1.getNode()); verify(graph).add(event2.getNode()); verifyNoMoreInteractions(graph); } @Test public void testRecordEdgeWithoutParent() { DependencyFoundEvent<String> event1, event2; event1 = new DependencyFoundEvent<String>("from1", "to1"); sut.recordEdge(event1); event2 = new DependencyFoundEvent<String>("from2", "to2"); sut.recordEdge(event2); verify(graph).addChildren(event1.getFrom(), Collections.singleton(event1.getTo())); verify(graph).addChildren(event2.getFrom(), Collections.singleton(event2.getTo())); verifyNoMoreInteractions(graph); } @Test public void testRecordEdgeWithParent() { DependencyFoundEvent<String> event1, event2; event1 = new DependencyFoundEvent<String>("from1", "to1", Optional.of("parent")); sut.recordEdge(event1); verify(graph).addChildren(event1.getFrom(), Collections.singleton(event1.getTo())); verify(graph).addParentData(event1.getTo(), event1.getParent().get()); event2 = new DependencyFoundEvent<String>("from2", "to2", Optional.of("parent2")); sut.recordEdge(event2); verify(graph).addChildren(event2.getFrom(), Collections.singleton(event2.getTo())); verify(graph).addParentData(event2.getTo(), event2.getParent().get()); } @Test public void testRemoval() { ResourceRemovedEvent<String> event; sut.recordNode(new ResolvedEvent<String>("a")); sut.recordNode(new ResolvedEvent<String>("b")); sut.recordNode(new ResolvedEvent<String>("c")); sut.recordNode(new ResolvedEvent<String>("d")); event = new ResourceRemovedEvent<String>(Sets.newHashSet("a", "b", "c")); sut.recordRemoval(event); verify(graph, times(4)).add(anyString()); verify(graph).removeAll(event.getElements()); verifyNoMoreInteractions(graph); } }