/*******************************************************************************
* Copyright (c) 2010 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;
import java.util.Collection;
import java.util.List;
import java.util.StringTokenizer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.JavaModelException;
import org.jboss.tools.cdi.core.IBean;
import org.jboss.tools.cdi.core.IInjectionPoint;
import org.jboss.tools.cdi.core.IParameter;
import org.jboss.tools.cdi.core.IProducerMethod;
import org.jboss.tools.common.util.FileUtil;
/**
* @author Alexey Kazakov
*/
public class ProducerMethodDefinitionTest extends TCKTest {
/**
* Section 3.3.2 - Declaring a producer method
* i) All producer method parameters are injection points.
*
* @throws JavaModelException
*/
public void testBindingTypesAppliedToProducerMethodParameters() throws CoreException {
Collection<IBean> beans = cdiProject.getBeans(true, "org.jboss.jsr299.tck.tests.implementation.producer.method.definition.Tarantula", "org.jboss.jsr299.tck.tests.implementation.producer.method.definition.Deadliest");
IBean bean = beans.iterator().next();
Collection<IInjectionPoint> injections = bean.getInjectionPoints();
assertEquals("Wrong number of injection points in the producer.", 2, injections.size());
// TODO use real location for injection points.
IFile file = (IFile)bean.getResource();
assertLocationEquals(file, injections, "@Tame Tarantula tameTarantula", 0/*1287*/, 29);
assertLocationEquals(file, injections, "Tarantula tarantula)", 0/*1328*/, 19);
}
// TODO continue implementing producer tests.
public void testParameterDefinition() {
IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/definition/qualifier/SpiderProducer.java");
Collection<IBean> bs = cdiProject.getBeans(file.getFullPath());
IProducerMethod producer = null;
for (IBean bean: bs) {
if(bean instanceof IProducerMethod) {
IProducerMethod m = (IProducerMethod)bean;
if(m.getMethod().getElementName().equals("produceSpiderFromInjection")) {
producer = m;
}
}
}
assertNotNull(producer);
List<IParameter> ps = producer.getParameters();
assertEquals(1, ps.size());
IParameter param = ps.get(0);
assertTrue(param.isAnnotationPresent("org.jboss.jsr299.tck.tests.definition.qualifier.Tame"));
}
public void testParameterDefinitionOnBrokenMethod() {
IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/definition/qualifier/SpiderProducer_Broken.java");
Collection<IBean> bs = cdiProject.getBeans(file.getFullPath());
IProducerMethod producer = null;
for (IBean bean: bs) {
if(bean instanceof IProducerMethod) {
IProducerMethod m = (IProducerMethod)bean;
if(m.getMethod().getElementName().equals("produceSpiderFromInjection")) {
producer = m;
}
}
}
assertNotNull(producer);
List<IParameter> ps = producer.getParameters();
assertEquals(1, ps.size());
IParameter param = ps.get(0);
assertTrue(param.isAnnotationPresent("org.jboss.jsr299.tck.tests.definition.qualifier.Tame"));
}
}