@Nullable public JstdTestCaseStructure findEnclosingTestCaseByOffset(int documentOffset) { for (JstdTestCaseStructure testCaseStructure : myTestCaseStructures) { TextRange testCaseCallExpressionTextRange = testCaseStructure.getEnclosingCallExpression().getTextRange(); if (JsPsiUtils.containsOffsetStrictly(testCaseCallExpressionTextRange, documentOffset)) { return testCaseStructure; } } return null; }
@Override public PsiElement findPsiElement(@NotNull String testCaseName, @Nullable String testMethodName) { JstdTestCaseStructure testCaseStructure = myTestCaseStructureByNameMap.get(testCaseName); if (testCaseStructure == null) { return null; } if (testMethodName == null) { return testCaseStructure.getEnclosingCallExpression(); } JstdTestStructure testStructure = testCaseStructure.getTestStructureByName(testMethodName); if (testStructure != null) { return testStructure.getTestMethodNameDeclaration(); } return null; }
void postProcess() { myNameByPsiElementMap = Collections.emptyMap(); myPrototypeBasedTestElements = Collections.emptyMap(); if (myTestCaseStructures.isEmpty()) { return; } int totalCount = 0; int prototypeBasedTestCount = 0; for (JstdTestCaseStructure testCaseStructure : myTestCaseStructures) { totalCount += testCaseStructure.getTestCount() + 1; for (JstdTestStructure testStructure : testCaseStructure.getTestStructures()) { if (testStructure.getWholeLeftDefExpr() != null) { prototypeBasedTestCount++; } } } myNameByPsiElementMap = new IdentityHashMap<PsiElement, String>(totalCount); if (prototypeBasedTestCount > 0) { myPrototypeBasedTestElements = new IdentityHashMap<PsiElement, Void>(prototypeBasedTestCount); } for (JstdTestCaseStructure testCaseStructure : myTestCaseStructures) { JSExpression testCaseMethodExpr = testCaseStructure.getEnclosingCallExpression().getMethodExpression(); if (testCaseMethodExpr != null) { myNameByPsiElementMap.put(testCaseMethodExpr, testCaseStructure.getName()); } for (JstdTestStructure testStructure : testCaseStructure.getTestStructures()) { PsiElement anchor = testStructure.getTestMethodNameDeclaration(); myNameByPsiElementMap.put(anchor, testStructure.getName()); JSDefinitionExpression wholeLeftDefExpr = testStructure.getWholeLeftDefExpr(); if (wholeLeftDefExpr != null) { myPrototypeBasedTestElements.put(wholeLeftDefExpr, null); } } } }