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

net.thucydides.core.steps.ReadableMethodName Maven / Gradle / Ivy

package net.thucydides.core.steps;

import ch.lambdaj.function.convert.Converter;

import java.lang.reflect.Method;
import java.util.Arrays;

import static ch.lambdaj.Lambda.convert;
import static ch.lambdaj.Lambda.join;

/**
 * Created by john on 7/08/2015.
 */
public class ReadableMethodName {

    public static TestNameBuilder forMethod(final Method method) {
        return new TestNameBuilder(method);
    }

    public static class TestNameBuilder {

        Method method;
        Object[] args = new Object[]{};

        public TestNameBuilder(Method method) {
            this.method = method;
        }

        public TestNameBuilder withArguments(final Object[] args) {
            this.args = Arrays.copyOf(args,args.length);
            return this;
        }

        public String asString() {
            StringBuilder testName = new StringBuilder(method.getName());
            return testName.append(argumentsTo(testName)).toString();
        }

        private String argumentsTo(StringBuilder testName) {
            if (args.length == 0) {
                return "";
            }
            return ": " + join(convert(args, toReadableForm()));
        }

        private Converter toReadableForm() {
            return new Converter() {
                @Override
                public String convert(Object argument) {
                    return StepArgumentWriter.readableFormOf(argument);
                }
            };
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy