blob: 48a8218d543b6a3c5d6cfe14068bb881c1da777e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016, 2017 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.junit5.runner;
import java.text.MessageFormat;
import java.util.function.Function;
import org.junit.platform.engine.TestSource;
import org.junit.platform.engine.support.descriptor.ClassSource;
import org.junit.platform.engine.support.descriptor.MethodSource;
import org.junit.platform.launcher.TestIdentifier;
import org.eclipse.jdt.internal.junit.runner.ITestIdentifier;
import org.eclipse.jdt.internal.junit.runner.MessageIds;
public class JUnit5Identifier implements ITestIdentifier {
private TestIdentifier fTestIdentifier;
public JUnit5Identifier(TestIdentifier testIdentifier) {
fTestIdentifier= testIdentifier;
}
@Override
public String getName() {
return fTestIdentifier.getSource().map(this::getName).orElse(fTestIdentifier.getDisplayName());
}
private String getName(TestSource testSource) {
if (testSource instanceof ClassSource) {
return ((ClassSource) testSource).getJavaClass().getName();
}
if (testSource instanceof MethodSource) {
MethodSource methodSource= (MethodSource) testSource;
return MessageFormat.format(MessageIds.TEST_IDENTIFIER_MESSAGE_FORMAT, methodSource.getMethodName(), methodSource.getClassName());
}
return null;
}
@Override
public String getDisplayName() {
return fTestIdentifier.getDisplayName();
}
@Override
public int hashCode() {
return fTestIdentifier.hashCode();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof JUnit5Identifier))
return false;
JUnit5Identifier id= (JUnit5Identifier) obj;
return fTestIdentifier.equals(id.fTestIdentifier);
}
@Override
public String getParameterTypes() {
Function<TestSource, String> getParameterTypes= (TestSource source) -> {
return source instanceof MethodSource ? ((MethodSource) source).getMethodParameterTypes() : null;
};
return fTestIdentifier.getSource().map(getParameterTypes).orElse(""); //$NON-NLS-1$
}
@Override
public String getUniqueId() {
return fTestIdentifier.getUniqueId();
}
}