/* * Copyright 2015-2017 the original author or authors. * * 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 */ package org.junit.vintage.engine; import org.junit.platform.engine.UniqueId; import org.junit.vintage.engine.descriptor.VintageTestDescriptor; /** * Test data builder for building unique IDs for the {@link VintageTestEngine}. * * Used to decouple tests from concrete unique ID strings. * * @since 4.12 */ public class VintageUniqueIdBuilder { public static UniqueId uniqueIdForErrorInClass(Class<?> clazz, Class<?> failingClass) { return uniqueIdForClasses(clazz).append(VintageTestDescriptor.SEGMENT_TYPE_TEST, "initializationError(" + failingClass.getName() + ")"); } public static UniqueId uniqueIdForClass(Class<?> clazz) { return uniqueIdForClasses(clazz); } public static UniqueId uniqueIdForClasses(Class<?> clazz, Class<?>... clazzes) { UniqueId uniqueId = uniqueIdForClass(clazz.getName()); for (Class<?> each : clazzes) { uniqueId = uniqueId.append(VintageTestDescriptor.SEGMENT_TYPE_TEST, each.getName()); } return uniqueId; } public static UniqueId uniqueIdForClass(String fullyQualifiedClassName) { UniqueId containerId = engineId(); return containerId.append(VintageTestDescriptor.SEGMENT_TYPE_RUNNER, fullyQualifiedClassName); } public static UniqueId uniqueIdForMethod(Class<?> testClass, String methodName) { return uniqueIdForClass(testClass).append(VintageTestDescriptor.SEGMENT_TYPE_TEST, methodValue(testClass, methodName)); } private static String methodValue(Class<?> testClass, String methodName) { return methodName + "(" + testClass.getName() + ")"; } public static UniqueId uniqueIdForMethod(Class<?> testClass, String methodName, String index) { return uniqueIdForClass(testClass).append(VintageTestDescriptor.SEGMENT_TYPE_TEST, methodValue(testClass, methodName) + "[" + index + "]"); } public static UniqueId uniqueIdForMethod(UniqueId containerId, Class<?> testClass, String methodName) { return containerId.append(VintageTestDescriptor.SEGMENT_TYPE_TEST, methodValue(testClass, methodName)); } public static UniqueId engineId() { return UniqueId.forEngine(VintageTestDescriptor.ENGINE_ID); } }