/*******************************************************************************
* Copyright (c) 2010 - 2012 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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
*
* Contributor:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.el.core.test.resolver;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jface.text.BadLocationException;
import org.jboss.tools.common.el.core.model.ELExpression;
import org.jboss.tools.common.el.core.parser.ELParserFactory;
import org.jboss.tools.common.el.core.parser.ELParserUtil;
import org.jboss.tools.common.el.core.resolver.ELCompletionEngine;
import org.jboss.tools.common.el.core.resolver.ELContext;
import org.jboss.tools.common.el.core.resolver.ELResolution;
import org.jboss.tools.common.el.core.resolver.ELResolutionImpl;
import org.jboss.tools.common.el.core.resolver.ElVarSearcher;
import org.jboss.tools.common.el.core.resolver.IRelevanceCheck;
import org.jboss.tools.common.el.core.resolver.Var;
import org.jboss.tools.common.text.TextProposal;
import org.jboss.tools.test.resource.ResourceFactory;
public class ElVarSearcherTest extends TestCase{
public void testSetFile() {
ELCompletionEngine fakeEngine = new FakeELCompletionEngine();
IFile file = ResourceFactory.createFile("${test}");
ElVarSearcher varSearcher = new ElVarSearcher(null,fakeEngine);
varSearcher.setFile(file);
}
public void testFindAllVarsIFileInt() throws CoreException, IOException {
ELCompletionEngine fakeEngine = new FakeELCompletionEngine();
String fileContent = "<html><body var=\"test1\" value=\"#{value1}\"><p var=\"test2\" value=\"#{value2}\"/></body></html>";
IFile file = ResourceFactory.createFile(fileContent,"Test1","test.xml");
ElVarSearcher varSearcher = new ElVarSearcher(file,fakeEngine);
List<Var> vars = varSearcher.findAllVars(file,fileContent.indexOf("#{value2}"));
assertTrue(vars.size()==2);
}
private static class FakeELCompletionEngine implements ELCompletionEngine {
@Override
public ELResolution resolveELOperand(IFile file, ELContext context,
ELExpression operand, boolean returnEqualedVariablesOnly,
List<Var> vars, ElVarSearcher varSearcher, int offset)
throws BadLocationException, StringIndexOutOfBoundsException {
return new ELResolutionImpl(operand);
}
@Override
public ELParserFactory getParserFactory() {
return ELParserUtil.getJbossFactory();
}
@Override
public List<TextProposal> getProposals(ELContext context, String el, int offset) {
return Collections.emptyList();
}
@Override
public ELResolution resolve(ELContext context, ELExpression operand, int offset) {
return new ELResolutionImpl(operand);
}
@Override
public List<TextProposal> getProposals(ELContext context, int offset) {
return Collections.emptyList();
}
@Override
public IRelevanceCheck createRelevanceCheck(IJavaElement element) {
return null;
}
}
}