import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Name:
 * Date:
 * Description: Static values and helper methods for JUnit5 unit tests.
 */

public class Values {
    public static final String PASSED = "PASSED";
    public static final String SUITE_TITLE_FORMAT = "\n%s Test Suite " + dateTime() + "\n";
    public static final String TEST_CLASS_FORMAT = "  %s";
    public static final String TEST_TITLE_FORMAT = "    %s\n";
    public static final String TEST_EQUALS_FORMAT = "      %s = %s => ";
    public static final String TEST_FORMAT = "    %s => ";

    public static final String TITLE_API = "API Tests";
    public static final String TITLE_CORNER_CASES = "Corner Case Tests";
    public static final String TITLE_FUNCTIONAL = "Functional Tests";

    public static final String SUITE_TITLE_BASEBALL_ELIMINATION = "BaseballElimination";

    public static final String INVALID_WINS_ARGUMENT_THROWS_EXCEPTION = "Invalid wins() argument throws expected exception";
    public static final String INVALID_LOSSES_ARGUMENT_THROWS_EXCEPTION = "Invalid losses() argument throws expected exception";
    public static final String INVALID_REMAINING_ARGUMENT_THROWS_EXCEPTION = "Invalid remaining() argument throws expected exception";
    public static final String INVALID_AGAINST_FIRST_ARGUMENT_THROWS_EXCEPTION = "Invalid against() first argument throws expected exception";
    public static final String INVALID_AGAINST_SECOND_ARGUMENT_THROWS_EXCEPTION = "Invalid against() second argument throws expected exception";
    public static final String INVALID_IS_ELIMINATED_ARGUMENT_THROWS_EXCEPTION = "Invalid isEliminated() argument throws expected exception";
    public static final String INVALID_ELIM_CERT_ARGUMENT_THROWS_EXCEPTION = "Invalid certificateOfElimination() argument throws expected exception";

    public static final String VERIFY_API_METHODS = "Expected methods";
    public static final String VERIFY_CLASS_EXISTS = "Class BaseballElimination exists";
    public static final String VERIFY_NUMBER_OF_TEAMS = "Method numberOfTeams() is correct";
    public static final String VERIFY_TEAMS = "Method teams() is correct";
    public static final String VERIFY_WINS = "Method wins() is correct";
    public static final String VERIFY_LOSSES = "Method losses() is correct";
    public static final String VERIFY_REMAINING = "Method remaining() is correct";
    public static final String VERIFY_AGAINST = "Method against() is correct";
    public static final String VERIFY_NOT_ELIMINATED = "Method isEliminated() is correct for teams not eliminated";
    public static final String VERIFY_ELIMINATED = "Method isEliminated() is correct for teams eliminated";

    public static String dateTime() {
        String pattern = "yyyy-MM-dd h:mm a";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
        return simpleDateFormat.format(new Date());
    }
}