All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.rationaleemotions.internal.ClassesHelper Maven / Gradle / Ivy

package com.rationaleemotions.internal;

import com.rationaleemotions.annotations.internal.XmlClass;
import com.rationaleemotions.annotations.internal.XmlMethod;
import com.rationaleemotions.annotations.internal.XmlParameter;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import org.testng.collections.Lists;
import org.testng.xml.XmlInclude;
import org.testng.xml.XmlTest;

public class ClassesHelper {

  private ClassesHelper() {
  }


  public static void addTestNGClassDefinitionsIfProvided(XmlTest xmlTest, XmlClass[] xmlClasses) {
    List testngClasses = Arrays.stream(xmlClasses)
        .map(xmlClass -> {
          org.testng.xml.XmlClass result = new org.testng.xml.XmlClass(xmlClass.classToRun());
          handleMethodDefinitions(result, xmlClass.methods());
          for (XmlParameter p : xmlClass.parameters()) {
            result.getLocalParameters().put(p.name(), p.value());
          }
          return result;
        }).collect(Collectors.toList());
    xmlTest.setXmlClasses(testngClasses);
  }

  private static void handleMethodDefinitions(org.testng.xml.XmlClass result,
      XmlMethod[] xmlMethods) {
      AtomicInteger index = new AtomicInteger(0);
    for (XmlMethod xmlMethod : xmlMethods) {
      result.getExcludedMethods().add(xmlMethod.exclude());
      XmlInclude xi = new XmlInclude(xmlMethod.include(), index.getAndIncrement());
      for (XmlParameter p : xmlMethod.parameters()) {
        xi.getLocalParameters().put(p.name(), p.value());
      }
      result.getIncludedMethods().add(xi);
    }
  }

  public static void addTestNGClassesIfProvided(XmlTest xmlTest, Class[] classes) {
    List testngClasses = Arrays.stream(classes)
        .map(org.testng.xml.XmlClass::new)
        .collect(Collectors.toList());
    if (!testngClasses.isEmpty()) {
      xmlTest.setXmlClasses(testngClasses);
    }
  }

  private static List stringToList(String in) {
    String[] numbers = in.split(" ");
    List result = Lists.newArrayList();
    for (String n : numbers) {
      result.add(Integer.parseInt(n));
    }
    return result;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy