package test.annotationtransformer;

import org.testng.IAnnotationTransformer;
import org.testng.annotations.ITestAnnotation;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class MyTransformer implements IAnnotationTransformer {

  private final List<String> methodNames = new ArrayList<>();

  @Override
  public void transform(ITestAnnotation annotation, Class testClass,
      Constructor testConstructor, Method testMethod) {
    annotation.setTimeOut(10000);
    if (testMethod != null) {
      switch (testMethod.getName()) {
        case "three":
          annotation.setInvocationCount(3);
          break;
        case "four":
          annotation.setInvocationCount(4);
          break;
        case "five":
          annotation.setInvocationCount(5);
          break;
        default:
          break;
      }
      methodNames.add(testMethod.getName());
    }
  }

  public List<String> getMethodNames() {
    return methodNames;
  }
}
