/* * Copyright 2000-2015 JetBrains s.r.o. * * 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.intellij.mock; import com.intellij.lang.FileASTNode; import com.intellij.lang.Language; import com.intellij.navigation.ItemPresentation; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.FileContextUtil; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.PsiElementProcessor; import com.intellij.psi.search.SearchScope; import com.intellij.testFramework.LightVirtualFile; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.LocalTimeCounter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class MockPsiFile extends MockPsiElement implements PsiFile { private final long myModStamp = LocalTimeCounter.currentTime(); private VirtualFile myVirtualFile = null; public boolean valid = true; public String text = ""; private final FileViewProvider myFileViewProvider; private final PsiManager myPsiManager; public MockPsiFile(@NotNull PsiManager psiManager) { super(psiManager.getProject()); myPsiManager = psiManager; myFileViewProvider = new SingleRootFileViewProvider(getManager(), new LightVirtualFile("noname", getFileType(), "")); } public MockPsiFile(@NotNull VirtualFile virtualFile, @NotNull PsiManager psiManager) { super(psiManager.getProject()); myPsiManager = psiManager; myVirtualFile = virtualFile; myFileViewProvider = new SingleRootFileViewProvider(getManager(), virtualFile); } @Override public VirtualFile getVirtualFile() { return myVirtualFile; } @Override public boolean processChildren(final PsiElementProcessor<PsiFileSystemItem> processor) { return true; } @Override @NotNull public String getName() { return "mock.file"; } @Override @Nullable public ItemPresentation getPresentation() { return null; } @Override public PsiElement setName(@NotNull String name) throws IncorrectOperationException { throw new IncorrectOperationException("Not implemented"); } @Override public void checkSetName(String name) throws IncorrectOperationException { throw new IncorrectOperationException("Not implemented"); } @Override public boolean isDirectory() { return false; } @Override public PsiDirectory getContainingDirectory() { return null; } @Nullable public PsiDirectory getParentDirectory() { throw new UnsupportedOperationException("Method getParentDirectory is not yet implemented in " + getClass().getName()); } @Override public long getModificationStamp() { return myModStamp; } @Override @NotNull public PsiFile getOriginalFile() { return this; } @Override @NotNull public FileType getFileType() { return StdFileTypes.JAVA; } @Override @NotNull public Language getLanguage() { return StdFileTypes.JAVA.getLanguage(); } @Override @NotNull public PsiFile[] getPsiRoots() { return new PsiFile[]{this}; } @Override @NotNull public FileViewProvider getViewProvider() { return myFileViewProvider; } @Override public PsiManager getManager() { return myPsiManager; } @Override @NotNull public PsiElement[] getChildren() { return PsiElement.EMPTY_ARRAY; } @Override public PsiDirectory getParent() { return null; } @Override public PsiElement getFirstChild() { return null; } @Override public PsiElement getLastChild() { return null; } @Override public void acceptChildren(@NotNull PsiElementVisitor visitor) { } @Override public PsiElement getNextSibling() { return null; } @Override public PsiElement getPrevSibling() { return null; } @Override public PsiFile getContainingFile() { return null; } @Override public TextRange getTextRange() { return null; } @Override public int getStartOffsetInParent() { return 0; } @Override public int getTextLength() { return 0; } @Override public PsiElement findElementAt(int offset) { return null; } @Override public PsiReference findReferenceAt(int offset) { return null; } @Override public int getTextOffset() { return 0; } @Override public String getText() { return text; } @Override @NotNull public char[] textToCharArray() { return ArrayUtil.EMPTY_CHAR_ARRAY; } @Override public boolean textMatches(@NotNull CharSequence text) { return false; } @Override public boolean textMatches(@NotNull PsiElement element) { return false; } @Override public boolean textContains(char c) { return false; } @Override public void accept(@NotNull PsiElementVisitor visitor) { } @Override public PsiElement copy() { return null; } @Override public PsiElement add(@NotNull PsiElement element) throws IncorrectOperationException { return null; } @Override public PsiElement addBefore(@NotNull PsiElement element, PsiElement anchor) throws IncorrectOperationException { return null; } @Override public PsiElement addAfter(@NotNull PsiElement element, PsiElement anchor) throws IncorrectOperationException { return null; } @Override public void checkAdd(@NotNull PsiElement element) throws IncorrectOperationException { } @Override public PsiElement addRange(PsiElement first, PsiElement last) throws IncorrectOperationException { return null; } @Override public PsiElement addRangeBefore(@NotNull PsiElement first, @NotNull PsiElement last, PsiElement anchor) throws IncorrectOperationException { return null; } @Override public PsiElement addRangeAfter(PsiElement first, PsiElement last, PsiElement anchor) throws IncorrectOperationException { return null; } @Override public void delete() throws IncorrectOperationException { } @Override public void checkDelete() throws IncorrectOperationException { } @Override public void deleteChildRange(PsiElement first, PsiElement last) throws IncorrectOperationException { } @Override public PsiElement replace(@NotNull PsiElement newElement) throws IncorrectOperationException { return null; } @Override public boolean isValid() { return valid; } @Override public boolean isWritable() { return false; } @Override public PsiReference getReference() { return null; } @Override @NotNull public PsiReference[] getReferences() { return PsiReference.EMPTY_ARRAY; } @Override public <T> T getCopyableUserData(@NotNull Key<T> key) { return null; } @Override public <T> void putCopyableUserData(@NotNull Key<T> key, T value) { } @Override @NotNull public Project getProject() { final PsiManager manager = getManager(); if (manager == null) throw new PsiInvalidElementAccessException(this); return manager.getProject(); } @Override public boolean isPhysical() { return true; } @Override public PsiElement getNavigationElement() { return this; } @Override public PsiElement getOriginalElement() { return this; } @Override @NotNull public GlobalSearchScope getResolveScope() { return GlobalSearchScope.EMPTY_SCOPE; } @Override @NotNull public SearchScope getUseScope() { return GlobalSearchScope.EMPTY_SCOPE; } @Override public FileASTNode getNode() { return null; } @Override public void subtreeChanged() { } @Override public void navigate(boolean requestFocus) { } @Override public boolean canNavigate() { return false; } @Override public boolean canNavigateToSource() { return false; } @Override public PsiElement getContext() { return FileContextUtil.getFileContext(this); } }