package com.sebastian_daschner.jaxrs_analyzer.analysis.utils; import com.sebastian_daschner.jaxrs_analyzer.model.JavaUtils; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.util.Collection; import java.util.LinkedList; import java.util.List; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(Parameterized.class) public class JavaUtilSignatureTest { private final String signature; private final List<String> parameterTypes; public JavaUtilSignatureTest(final String signature, final List<String> parameterTypes) { this.signature = signature; this.parameterTypes = parameterTypes; } @Test public void testGetParameters() { try { assertThat(JavaUtils.getParameters(signature), is(parameterTypes)); } catch (Exception e) { System.err.println("Failed for " + signature); throw e; } } @Parameterized.Parameters public static Collection<Object[]> data() { final Collection<Object[]> data = new LinkedList<>(); data.add(testData("(Z)V", singletonList("Z"))); data.add(testData("([Z)V", singletonList("[Z"))); data.add(testData("(Ljava/lang/String;)V", singletonList("Ljava/lang/String;"))); data.add(testData("(Ljava/lang/String;Ljava/util/List;)V", asList("Ljava/lang/String;", "Ljava/util/List;"))); data.add(testData("(Ljava/util/List<Ljava/lang/String;>;)V", singletonList("Ljava/util/List<Ljava/lang/String;>;"))); data.add(testData("([Ljava/util/List<Ljava/lang/String;>;)V", singletonList("[Ljava/util/List<Ljava/lang/String;>;"))); data.add(testData("(Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;)Ljavax/ws/rs/core/Response;", singletonList("Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;"))); data.add(testData("([Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;)Ljavax/ws/rs/core/Response;", singletonList("[Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;"))); return data; } private static Object[] testData(String signature, List<String> types) { final Object[] testData = new Object[2]; testData[0] = signature; testData[1] = types; return testData; } }