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

com.slickqa.junit.testrunner.output.OutputFormat Maven / Gradle / Ivy

package com.slickqa.junit.testrunner.output;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import com.slickqa.junit.testrunner.Configuration;
import com.slickqa.junit.testrunner.TerminalWidthProvider;
import de.vandermeer.asciitable.AsciiTable;
import org.jline.terminal.TerminalBuilder;

import java.io.IOException;
import java.util.List;

public enum OutputFormat {
    table(null),
    json(new JsonFactory()),
    yaml(new YAMLFactory());

    public static String COLUMN_WIDTH_OPTION = "COLUMN_WIDTH_OPTION";
    private JsonFactory factory;

    OutputFormat(JsonFactory factory) {
        this.factory = factory;
    }

    public String generateOutput(EndUserData data, Configuration... options) {
        if (data == null) {
            return "";
        }
        if (this == table) {
            AsciiTable table = new AsciiTable();
            table.addRule();
            if(data.addColumnHeadersToTable(table, options)) {
                table.addRule();
            }
            data.addToTable(table, options);

            int width = TerminalWidthProvider.width();
            String widthOption = Configuration.GetOptionIfSet(options, COLUMN_WIDTH_OPTION);
            if (widthOption != null) {
                width = Integer.parseInt(widthOption);
            }
            table.getContext().setWidth(width);
            table.getRenderer().setCWC(new SmartColumnWidthCalculator());
            return table.render();
        }
        ObjectMapper mapper = new ObjectMapper(factory);
        try {
            return mapper.writeValueAsString(data);
        } catch (JsonProcessingException e) {
            return "";
        }
    }

    public String generateOutput(List data, Configuration... options) {
        if (data == null || data.size() == 0) {
            return "";
        }
        if (this == table) {
            AsciiTable table = new AsciiTable();
            table.addRule();
            if(data.get(0).addColumnHeadersToTable(table, options)) {
                table.addRule();
            }
            for (EndUserData item : data) {
                item.addToTable(table, options);
                table.addRule();
            }
            int width = TerminalWidthProvider.width();
            String widthOption = Configuration.GetOptionIfSet(options, COLUMN_WIDTH_OPTION);
            if (widthOption != null) {
                width = Integer.parseInt(widthOption);
            }
            table.getContext().setWidth(width);
            table.getRenderer().setCWC(new SmartColumnWidthCalculator());
            return table.render();
        }
        ObjectMapper mapper = new ObjectMapper(factory);
        try {
            return mapper.writeValueAsString(data);
        } catch (JsonProcessingException e) {
            return "";
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy