package com.reason.lang.ocaml; import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiTreeUtil; import com.reason.lang.BaseParsingTestCase; import com.reason.lang.core.psi.PsiIfStatement; import com.reason.lang.core.psi.PsiScopedExpr; import java.util.ArrayList; import java.util.List; public class IfParsingTest extends BaseParsingTestCase { public IfParsingTest() { super("", "re", new OclParserDefinition()); } public void testBasicIfParsing() { PsiFile psiFile = parseCode("let _ = if x then ()"); PsiIfStatement e = firstOfType(psiFile, PsiIfStatement.class); assertNotNull(e); assertNotNull(e.getBinaryCondition()); PsiScopedExpr ifScope = PsiTreeUtil.findChildOfType(e, PsiScopedExpr.class); assertNotNull(ifScope); assertEquals("()", ifScope.getText()); } public void testBasicIfElseParsing() { PsiFile psiFile = parseCode("let _ = if x then 1 else 2"); PsiIfStatement e = firstOfType(psiFile, PsiIfStatement.class); assertNotNull(e); assertNotNull(e.getBinaryCondition()); List<PsiScopedExpr> scopes = new ArrayList<>(PsiTreeUtil.findChildrenOfType(e, PsiScopedExpr.class)); assertEquals(2, scopes.size()); assertEquals("1", scopes.get(0).getText()); assertEquals("2", scopes.get(1).getText()); } public void testIfWithIn() { PsiFile file = parseCode("let _ = if x then let init = y in let data = z"); assertEquals(1, letExpressions(file).size()); assertNotNull(firstOfType(file, PsiIfStatement.class)); } }