package com.chrisfolger.needsmoredojo.testutil; import com.intellij.lang.ASTNode; import com.intellij.lang.javascript.psi.JSElement; import com.intellij.lang.javascript.psi.JSExpression; import com.intellij.lang.javascript.psi.JSLiteralExpression; import com.intellij.lang.javascript.psi.impl.JSElementImpl; import com.intellij.lang.javascript.psi.impl.JSExpressionImpl; import com.intellij.psi.PsiElement; import static org.mockito.Mockito.mock; public class BasicPsiElements { public static JSLiteralExpression Null() { return new MockJSLiteralExpression("null"); } public static MockJSElementInterface defineFunction() { MockJSElement function = new MockJSElement("function()"); MockJSElement paren = new MockJSElement(")"); paren.isLastChildOf(function); return function; } public static MockJSArrayLiteralExpression define() { MockJSArrayLiteralExpression literal = new MockJSArrayLiteralExpression(new String[0]); MockJSElement bracket = new MockJSElement("]"); literal.setLastChild(bracket); literal.setBracket(bracket); return literal; } public static JSElement elementFromText(final String text) { return new JSElementImpl(mock(ASTNode.class)) { @Override public String getText() { return text; } }; } public static void createChain(MockJSElementInterface[] elementsInSequence) { for(int i=0;i<elementsInSequence.length-1;i++) { elementsInSequence[i].comesBefore(elementsInSequence[i+1]); } } public static MockJSElement comma() { return new MockJSElement(","); } public static MockJSElement space() { return new MockJSElement(" "); } public static MockJSElement lineBreak() { return new MockJSElement("\n"); } public static JSExpression expressionFromText(final String text) { return new JSExpressionImpl(mock(ASTNode.class)) { @Override public String getText() { return text; } }; } }