/* * Copyright (c) 2014, the Dart project authors. * * Licensed under the Eclipse Public License v1.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.eclipse.org/legal/epl-v10.html * * 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.dart.tools.core.internal.builder; import com.google.dart.tools.core.internal.model.DartIgnoreManager; import com.google.dart.tools.core.internal.model.MockIgnoreFile; import com.google.dart.tools.core.mock.MockProject; import junit.framework.TestCase; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.mockito.Mockito; public class IgnoreResourceFilterTest extends TestCase { private MockProject project; private DartIgnoreManager ignoreManager; private DeltaListener listener; private AnalysisMarkerManager markerManager; public void testPackageSourceAdded() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().packageSourceAdded(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verify(markerManager).clearMarkers(event.getResource()); Mockito.verifyNoMoreInteractions(markerManager); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().packageSourceAdded(event); Mockito.verify(listener).packageSourceAdded(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); ignoreManager.addToIgnores(event.getResource().getParent().getLocation()); newTarget().packageSourceAdded(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verify(markerManager, Mockito.times(2)).clearMarkers(event.getResource()); Mockito.verifyNoMoreInteractions(markerManager); } public void testPackageSourceChanged() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().packageSourceChanged(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().packageSourceChanged(event); Mockito.verify(listener).packageSourceChanged(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.addToIgnores(event.getResource().getParent().getLocation()); newTarget().packageSourceChanged(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testPackageSourceContainerRemoved() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent(); newTarget().packageSourceContainerRemoved(event); Mockito.verify(listener).packageSourceContainerRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testPackageSourceContainerRemoved_ignored() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().packageSourceContainerRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testPackageSourceContainerRemoved_unignored() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().packageSourceContainerRemoved(event); Mockito.verify(listener).packageSourceContainerRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testPackageSourceRemoved() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); newTarget().packageSourceRemoved(event); Mockito.verify(listener).packageSourceRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testPackageSourceRemoved_ignored() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().packageSourceRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testPackageSourceRemoved_unignored() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().packageSourceRemoved(event); Mockito.verify(listener).packageSourceRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testPubspecAdded() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().pubspecAdded(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().pubspecAdded(event); Mockito.verify(listener).pubspecAdded(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.addToIgnores(event.getResource().getParent().getLocation()); newTarget().pubspecAdded(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testPubspecChanged() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().pubspecChanged(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().pubspecChanged(event); Mockito.verify(listener).pubspecChanged(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.addToIgnores(event.getResource().getParent().getLocation()); newTarget().pubspecChanged(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testPubspecRemoved() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().pubspecRemoved(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().pubspecRemoved(event); Mockito.verify(listener).pubspecRemoved(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.addToIgnores(event.getResource().getParent().getLocation()); newTarget().pubspecRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceAdded() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().sourceAdded(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verify(markerManager).clearMarkers(event.getResource()); Mockito.verifyNoMoreInteractions(markerManager); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().sourceAdded(event); Mockito.verify(listener).sourceAdded(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); ignoreManager.addToIgnores(event.getResource().getParent().getLocation()); newTarget().sourceAdded(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verify(markerManager, Mockito.times(2)).clearMarkers(event.getResource()); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceChanged() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().sourceChanged(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().sourceChanged(event); Mockito.verify(listener).sourceChanged(event); Mockito.verifyNoMoreInteractions(listener); ignoreManager.addToIgnores(event.getResource().getParent().getLocation()); newTarget().sourceChanged(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceContainerRemoved() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent(); newTarget().sourceContainerRemoved(event); Mockito.verify(listener).sourceContainerRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceContainerRemoved_ignored() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().sourceContainerRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceContainerRemoved_null() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent_nullResource(); ignoreManager.addToIgnores(project.getFolder("web")); newTarget().sourceContainerRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceContainerRemoved_unignored() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().sourceContainerRemoved(event); Mockito.verify(listener).sourceContainerRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceRemoved() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); newTarget().sourceRemoved(event); Mockito.verify(listener).sourceRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceRemoved_ignored() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().sourceRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceRemoved_null() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent_nullResource(); ignoreManager.addToIgnores(project.getFolder("web").getFile("other.dart")); newTarget().sourceRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testSourceRemoved_unignored() throws Exception { SourceDeltaEvent event = newSourceDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().sourceRemoved(event); Mockito.verify(listener).sourceRemoved(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testVisitContext() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent(); newTarget().visitContext(event); Mockito.verify(listener).visitContext(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testVisitContext_ignored() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent(); // Pass along visit context... even if it is ignored ignoreManager.addToIgnores(event.getResource().getLocation()); newTarget().visitContext(event); Mockito.verify(listener).visitContext(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } public void testVisitContext_unignored() throws Exception { SourceContainerDeltaEvent event = newSourceContainerDeltaEvent(); ignoreManager.addToIgnores(event.getResource().getLocation()); ignoreManager.removeFromIgnores(event.getResource().getLocation()); newTarget().visitContext(event); Mockito.verify(listener).visitContext(event); Mockito.verifyNoMoreInteractions(listener); Mockito.verifyNoMoreInteractions(markerManager); } @Override protected void setUp() throws Exception { project = TestProjects.newPubProject3(); markerManager = Mockito.mock(AnalysisMarkerManager.class); ignoreManager = new DartIgnoreManager(new MockIgnoreFile()); listener = Mockito.mock(DeltaListener.class); } private SourceContainerDeltaEvent newSourceContainerDeltaEvent() { IFolder folder = project.getFolder("web"); SourceContainerDeltaEvent event = Mockito.mock(SourceContainerDeltaEvent.class); Mockito.when(event.getResource()).thenReturn(folder); return event; } private SourceContainerDeltaEvent newSourceContainerDeltaEvent_nullResource() { SourceContainerDeltaEvent event = Mockito.mock(SourceContainerDeltaEvent.class); Mockito.when(event.getResource()).thenReturn(null); return event; } private SourceDeltaEvent newSourceDeltaEvent() { IFile file = project.getFolder("web").getFile("other.dart"); SourceDeltaEvent event = Mockito.mock(SourceDeltaEvent.class); Mockito.when(event.getResource()).thenReturn(file); return event; } private SourceDeltaEvent newSourceDeltaEvent_nullResource() { SourceDeltaEvent event = Mockito.mock(SourceDeltaEvent.class); Mockito.when(event.getResource()).thenReturn(null); return event; } private IgnoreResourceFilter newTarget() { IgnoreResourceFilter filter = new IgnoreResourceFilter(ignoreManager, markerManager); filter.addDeltaListener(listener); return filter; } }