Home | History | Annotate | Download | only in naming
      1 package junitparams.naming;
      2 
      3 import junitparams.JUnitParamsRunner;
      4 import junitparams.Parameters;
      5 import junitparams.internal.TestMethod;
      6 import org.junit.Ignore;
      7 import org.junit.Test;
      8 import org.junit.runner.RunWith;
      9 import org.junit.runners.model.FrameworkMethod;
     10 import org.junit.runners.model.TestClass;
     11 
     12 import java.lang.reflect.Method;
     13 
     14 import static org.junit.Assert.assertEquals;
     15 
     16 @RunWith(JUnitParamsRunner.class)
     17 public class MacroSubstitutionNamingStrategyTest {
     18 
     19     public Object parametersForTestNaming() {
     20         return new Object[]{new Object[]{"withoutTestCaseAnnotation", "[0] value (withoutTestCaseAnnotation)"},
     21                             new Object[]{"withAnnotationWithoutTemplate", "[0] value (withAnnotationWithoutTemplate)"},
     22                             new Object[]{"withEmptyTemplate", "[0] value (withEmptyTemplate)"},
     23                             new Object[]{"whenTemplateResultedToEmptyName", "[0] value (whenTemplateResultedToEmptyName)"},
     24                             new Object[]{"withoutMacro", "plain name"}, new Object[]{"withIndexMacro", "0"},
     25                             new Object[]{"withParamsMacro", "value"},
     26                             new Object[]{"withMethodNameMacro", "withMethodNameMacro"},
     27                             new Object[]{"withCombinationOfMacros", "0: withCombinationOfMacros(value)"},
     28                             new Object[]{"withMacroNameWrittenInDifferentCase", "value value value"},
     29                             new Object[]{"withMethodParameterIndexInsideArgumentsArray", "value"},
     30                             new Object[]{"withMethodParameterIndexOutsideArgumentsArray", "Here is 100 argument:"},
     31                             new Object[]{"whenGivenMacroDoesntExist", "{not_existing_macro}"}};
     32     }
     33 
     34     // Android-changed: CTS and AndroidJUnitRunner rely on specific format to test names, changing
     35     // them will prevent CTS and AndroidJUnitRunner from working properly; see b/36541809
     36     @Ignore
     37     @Test
     38     @Parameters
     39     public void testNaming(String methodName, String expectedTestCaseName) throws NoSuchMethodException {
     40         TestCaseNamingStrategy strategy = createNamingStrategyForMethod(methodName, String.class);
     41 
     42         String name = strategy.getTestCaseName(0, new Object[]{"value"});
     43 
     44         assertEquals(expectedTestCaseName, name);
     45     }
     46 
     47     public void withoutTestCaseAnnotation(String param1) { }
     48 
     49     @TestCaseName("plain name")
     50     public void withoutMacro(String param1) { }
     51 
     52     @TestCaseName("{index}")
     53     public void withIndexMacro(String param1) { }
     54 
     55     @TestCaseName("{params}")
     56     public void withParamsMacro(String param1) { }
     57 
     58     @TestCaseName("{method}")
     59     public void withMethodNameMacro(String param1) { }
     60 
     61     @TestCaseName
     62     public void withAnnotationWithoutTemplate(String param1) { }
     63 
     64     @TestCaseName("")
     65     public void withEmptyTemplate(String param1) { }
     66 
     67     @TestCaseName("{index}: {method}({params})")
     68     public void withCombinationOfMacros(String param1) { }
     69 
     70     @TestCaseName("{params} {PARAMS} {PaRams}")
     71     public void withMacroNameWrittenInDifferentCase(String param1) { }
     72 
     73     @TestCaseName("{0}")
     74     public void withMethodParameterIndexInsideArgumentsArray(String param1) { }
     75 
     76     @TestCaseName("Here is 100 argument:{100}")
     77     public void withMethodParameterIndexOutsideArgumentsArray(String param1) { }
     78 
     79     @TestCaseName("{100}")
     80     public void whenTemplateResultedToEmptyName(String param1) { }
     81 
     82     @TestCaseName("{not_existing_macro}")
     83     public void whenGivenMacroDoesntExist(String param1) { }
     84 
     85     private TestCaseNamingStrategy createNamingStrategyForMethod(String name, Class... parameterTypes) throws NoSuchMethodException {
     86         TestMethod method = getCurrentClassMethod(name, parameterTypes);
     87 
     88         return new MacroSubstitutionNamingStrategy(method);
     89     }
     90 
     91     private TestMethod getCurrentClassMethod(String name, Class... parameterTypes) throws NoSuchMethodException {
     92         final Method method = MacroSubstitutionNamingStrategyTest.class.getMethod(name, parameterTypes);
     93         return new TestMethod(new FrameworkMethod(method),
     94                 new TestClass(this.getClass()));
     95     }
     96 }
     97