/*******************************************************************************
* Copyright (c) 2011 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
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.cdi.core.test.tck.validation;
import org.eclipse.core.resources.IFile;
import org.jboss.tools.cdi.core.test.tck.TCKTest;
import org.jboss.tools.common.el.core.ELReference;
import org.jboss.tools.common.el.core.model.ELExpression;
import org.jboss.tools.common.el.core.resolver.ELContext;
import org.jboss.tools.jst.web.kb.PageContextFactory;
/**
* @author Viacheslav Kabanovich
* See https://issues.jboss.org/browse/JBIDE-10545
*/
public class ELReferenceTest extends TCKTest {
public void testELReference() throws Exception {
IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/suppresswarnings/Fish.java");
checkFile(file);
file = tckProject.getFile("WebContent/tests/jbt/refactoring/HomePage.xhtml");
checkFile(file);
file = tckProject.getFile("WebContent/tests/lookup/injection/non/contextual/ManagedBeanTestPage.jsp");
checkFile(file);
}
void checkFile(IFile file) throws Exception {
assertTrue("File " + file.getFullPath() + " does not exist", file.exists());
ELContext context = PageContextFactory.getInstance().createPageContext(file);
ELReference[] els = context.getELReferences();
assertTrue(els.length > 0);
for (ELReference el: els) {
int start = el.getStartPosition();
int length = el.getLength();
ELExpression[] exs = el.getEl();
ELReference el1 = new ELReference();
el1.setStartPosition(start);
el1.setLength(length);
el1.setResource(file);
ELExpression[] exs1 = el1.getEl();
assertEquals(exs.length, exs1.length);
for (int i = 0; i < exs.length; i++) {
assertEquals(exs[i].toString(), exs1[i].toString());
}
}
}
}