/****************************************************************************** * Copyright (C) 2012-2013 Fabio Zadrozny * * 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: * Fabio Zadrozny <fabiofz@gmail.com> - initial API and implementation ******************************************************************************/ package org.python.pydev.editor.codecompletion.revisited; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import junit.framework.TestCase; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.text.IDocument; import org.python.pydev.builder.VisitorMemo; import org.python.pydev.parser.PythonNatureStub; import org.python.pydev.shared_core.callbacks.ICallback0; import org.python.pydev.shared_core.resource_stubs.FileMock; import org.python.pydev.shared_core.resource_stubs.FolderMock; import org.python.pydev.shared_core.resource_stubs.ProjectMock; public class PyCodeCompletionVisitorTest extends TestCase { public static void main(String[] args) { try { PyCodeCompletionVisitorTest test = new PyCodeCompletionVisitorTest(); test.setUp(); test.testVisitor(); test.tearDown(); System.out.println("Finished"); junit.textui.TestRunner.run(PyCodeCompletionVisitorTest.class); } catch (Throwable e) { e.printStackTrace(); } } public void testVisitor() { final List<IResource> changed = new ArrayList<IResource>(); PyCodeCompletionVisitor visitor = new PyCodeCompletionVisitor() { @Override public void visitChangedResource(IResource resource, ICallback0<IDocument> document, IProgressMonitor monitor) { super.visitChangedResource(resource, document, monitor); changed.add(resource); } }; ProjectMock project = new ProjectMock(); project.setNature(new PythonNatureStub()); FolderMock mod1 = new FolderMock("mod1"); FileMock initFromMod1 = new FileMock("__init__.py"); //visited mod1.addMember(initFromMod1); mod1.addMember(new FileMock("a.py")); //visited mod1.addMember(new FileMock("unrelated")); FolderMock mod2 = new FolderMock("mod2"); mod1.addMember(mod2); mod2.addMember(new FileMock("__init__.py")); // visited FolderMock mod3 = new FolderMock("mod3"); mod1.addMember(mod3); mod3.addMember(new FileMock("c.py")); //not visited because mod3 has no __init__. project.addMember(mod1); visitor.memo = new VisitorMemo(); visitor.visitAddedResource(initFromMod1, null, null); //See comments above for visited. assertNames(changed, "__init__.py", "a.py", "__init__.py"); } private void assertNames(List<IResource> changed, String... expected) { List<String> names = new ArrayList<String>(); for (IResource r : changed) { names.add(r.getName()); } assertEquals(names, Arrays.asList(expected)); } }