Код IT Загрузка примера кода…

Java main.java

import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.assertj.core.api.Assertions.*;

class EmailValidatorTest {

    @ParameterizedTest
    @ValueSource(strings = {
        "user@example.com",
        "test.email+tag@sub.domain.co.uk",
        "a@b.c"
    })
    void validate_validEmail_returnsSuccess(String email) {
        var result = EmailValidator.validate(email);
        assertThat(result).isEqualTo(EmailValidator.ValidationResult.success());
    }

    @ParameterizedTest
    @ValueSource(strings = {"", "   "})
    void validate_emptyOrWhitespace_returnsEmptyError(String email) {
        var result = EmailValidator.validate(email);
        var expected = EmailValidator.ValidationResult.error("Email не может быть пустым");
        assertThat(result).isEqualTo(expected);
    }

    @Test
    void validate_nullInput_returnsEmptyError() {
        var result = EmailValidator.validate(null);
        var expected = EmailValidator.ValidationResult.error("Email не может быть пустым");
        assertThat(result).isEqualTo(expected);
    }

    @ParameterizedTest
    @ValueSource(strings = {
        "missing-at.com",
        "double@@example.com",
        "@domain.com"
    })
    void validate_invalidAtCount_returnsAtError(String email) {
        var result = EmailValidator.validate(email);
        var expected = EmailValidator.ValidationResult.error(
            "Email должен содержать ровно один символ '@'"
        );
        assertThat(result).isEqualTo(expected);
    }

    @ParameterizedTest
    @ValueSource(strings = {
        "user@",
        "user@.com",
        "user@com.",
        "user@com"
    })
    void validate_invalidDomain_returnsDomainError(String email) {
        var result = EmailValidator.validate(email);
        var expected = EmailValidator.ValidationResult.error(
            "Некорректный домен: должен содержать точку и не начинаться/заканчиваться ею"
        );
        assertThat(result).isEqualTo(expected);
    }

    @Test
    void validate_emptyLocalPart_returnsLocalError() {
        var result = EmailValidator.validate("@example.com");
        var expected = EmailValidator.ValidationResult.error(
            "Локальная часть email не может быть пустой"
        );
        assertThat(result).isEqualTo(expected);
    }
}

import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.assertj.core.api.Assertions.*;

class EmailValidatorTest {

    @ParameterizedTest
    @ValueSource(strings = {
        "user@example.com",
        "test.email+tag@sub.domain.co.uk",
        "a@b.c"
    })
    void validate_validEmail_returnsSuccess(String email) {
        var result = EmailValidator.validate(email);
        assertThat(result).isEqualTo(EmailValidator.ValidationResult.success());
    }

    @ParameterizedTest
    @ValueSource(strings = {"", "   "})
    void validate_emptyOrWhitespace_returnsEmptyError(String email) {
        var result = EmailValidator.validate(email);
        var expected = EmailValidator.ValidationResult.error("Email не может быть пустым");
        assertThat(result).isEqualTo(expected);
    }

    @Test
    void validate_nullInput_returnsEmptyError() {
        var result = EmailValidator.validate(null);
        var expected = EmailValidator.ValidationResult.error("Email не может быть пустым");
        assertThat(result).isEqualTo(expected);
    }

    @ParameterizedTest
    @ValueSource(strings = {
        "missing-at.com",
        "double@@example.com",
        "@domain.com"
    })
    void validate_invalidAtCount_returnsAtError(String email) {
        var result = EmailValidator.validate(email);
        var expected = EmailValidator.ValidationResult.error(
            "Email должен содержать ровно один символ '@'"
        );
        assertThat(result).isEqualTo(expected);
    }

    @ParameterizedTest
    @ValueSource(strings = {
        "user@",
        "user@.com",
        "user@com.",
        "user@com"
    })
    void validate_invalidDomain_returnsDomainError(String email) {
        var result = EmailValidator.validate(email);
        var expected = EmailValidator.ValidationResult.error(
            "Некорректный домен: должен содержать точку и не начинаться/заканчиваться ею"
        );
        assertThat(result).isEqualTo(expected);
    }

    @Test
    void validate_emptyLocalPart_returnsLocalError() {
        var result = EmailValidator.validate("@example.com");
        var expected = EmailValidator.ValidationResult.error(
            "Локальная часть email не может быть пустой"
        );
        assertThat(result).isEqualTo(expected);
    }
}