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

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

There is a newer version: 2.0.7
Show newest version
package net.thucydides.core.steps;

import ch.lambdaj.function.convert.Converter;

import java.lang.reflect.Method;

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[]{};
        boolean addMarkup = false;

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

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

        public TestNameBuilder andMarkup() {
            this.addMarkup = true;
            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 ": " + optionalMarkupStart(addMarkup)
                        + join(convert(args, toReadableForm()))
                        + optionalMarkupEnd(addMarkup);
        }

        private String optionalMarkupStart(boolean addMarkup) {
            return (addMarkup) ? "" : "";
        }

        private String optionalMarkupEnd(boolean addMarkup) {
            return (addMarkup) ? "" : "";
        }

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy