package org.nzbhydra.config;

import org.assertj.core.api.AbstractObjectAssert;
import org.assertj.core.internal.Iterables;
import org.assertj.core.util.Objects;

/**
 * Abstract base class for {@link NotificationConfig} specific assertions - Generated by CustomAssertionGenerator.
 */
@jakarta.annotation.Generated(value = "assertj-assertions-generator")
public abstract class AbstractNotificationConfigAssert<S extends AbstractNotificationConfigAssert<S, A>, A extends NotificationConfig> extends AbstractObjectAssert<S, A> {

    /**
     * Creates a new <code>{@link AbstractNotificationConfigAssert}</code> to make assertions on actual NotificationConfig.
     *
     * @param actual the NotificationConfig we want to make assertions on.
     */
    protected AbstractNotificationConfigAssert(A actual, Class<S> selfType) {
        super(actual, selfType);
    }

    /**
     * Verifies that the actual NotificationConfig's appriseApiUrl is equal to the given one.
     *
     * @param appriseApiUrl the given appriseApiUrl to compare the actual NotificationConfig's appriseApiUrl to.
     * @return this assertion object.
     * @throws AssertionError - if the actual NotificationConfig's appriseApiUrl is not equal to the given one.
     */
    public S hasAppriseApiUrl(String appriseApiUrl) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting appriseApiUrl of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        String actualAppriseApiUrl = actual.getAppriseApiUrl();
        if (!Objects.areEqual(actualAppriseApiUrl, appriseApiUrl)) {
            failWithMessage(assertjErrorMessage, actual, appriseApiUrl, actualAppriseApiUrl);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's appriseCliPath is equal to the given one.
     *
     * @param appriseCliPath the given appriseCliPath to compare the actual NotificationConfig's appriseCliPath to.
     * @return this assertion object.
     * @throws AssertionError - if the actual NotificationConfig's appriseCliPath is not equal to the given one.
     */
    public S hasAppriseCliPath(String appriseCliPath) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting appriseCliPath of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        String actualAppriseCliPath = actual.getAppriseCliPath();
        if (!Objects.areEqual(actualAppriseCliPath, appriseCliPath)) {
            failWithMessage(assertjErrorMessage, actual, appriseCliPath, actualAppriseCliPath);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's appriseType is equal to the given one.
     *
     * @param appriseType the given appriseType to compare the actual NotificationConfig's appriseType to.
     * @return this assertion object.
     * @throws AssertionError - if the actual NotificationConfig's appriseType is not equal to the given one.
     */
    public S hasAppriseType(NotificationConfig.AppriseType appriseType) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting appriseType of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // null safe check
        NotificationConfig.AppriseType actualAppriseType = actual.getAppriseType();
        if (!Objects.areEqual(actualAppriseType, appriseType)) {
            failWithMessage(assertjErrorMessage, actual, appriseType, actualAppriseType);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig is display notifications.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual NotificationConfig is not display notifications.
     */
    public S isDisplayNotifications() {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is true
        if (!actual.isDisplayNotifications()) {
            failWithMessage("\nExpecting that actual NotificationConfig is display notifications but is not.");
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig is not display notifications.
     *
     * @return this assertion object.
     * @throws AssertionError - if the actual NotificationConfig is display notifications.
     */
    public S isNotDisplayNotifications() {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that property call/field access is false
        if (actual.isDisplayNotifications()) {
            failWithMessage("\nExpecting that actual NotificationConfig is not display notifications but is.");
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's displayNotificationsMax is equal to the given one.
     *
     * @param displayNotificationsMax the given displayNotificationsMax to compare the actual NotificationConfig's displayNotificationsMax to.
     * @return this assertion object.
     * @throws AssertionError - if the actual NotificationConfig's displayNotificationsMax is not equal to the given one.
     */
    public S hasDisplayNotificationsMax(int displayNotificationsMax) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // overrides the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting displayNotificationsMax of:\n  <%s>\nto be:\n  <%s>\nbut was:\n  <%s>";

        // check
        int actualDisplayNotificationsMax = actual.getDisplayNotificationsMax();
        if (actualDisplayNotificationsMax != displayNotificationsMax) {
            failWithMessage(assertjErrorMessage, actual, displayNotificationsMax, actualDisplayNotificationsMax);
        }

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's entries contains the given NotificationConfigEntry elements.
     *
     * @param entries the given elements that should be contained in actual NotificationConfig's entries.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's entries does not contain all given NotificationConfigEntry elements.
     */
    public S hasEntries(NotificationConfigEntry... entries) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given NotificationConfigEntry varargs is not null.
        if (entries == null) {
            failWithMessage("Expecting entries parameter not to be null.");
        }

        // check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
        Iterables.instance().assertContains(info, actual.getEntries(), entries);

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's entries contains the given NotificationConfigEntry elements in Collection.
     *
     * @param entries the given elements that should be contained in actual NotificationConfig's entries.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's entries does not contain all given NotificationConfigEntry elements.
     */
    public S hasEntries(java.util.Collection<? extends NotificationConfigEntry> entries) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given NotificationConfigEntry collection is not null.
        if (entries == null) {
            failWithMessage("Expecting entries parameter not to be null.");
            return myself; // to fool Eclipse "Null pointer access" warning on toArray.
        }

        // check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
        Iterables.instance().assertContains(info, actual.getEntries(), entries.toArray());

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's entries contains <b>only</b> the given NotificationConfigEntry elements and nothing else in whatever order.
     *
     * @param entries the given elements that should be contained in actual NotificationConfig's entries.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's entries does not contain all given NotificationConfigEntry elements.
     */
    public S hasOnlyEntries(NotificationConfigEntry... entries) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given NotificationConfigEntry varargs is not null.
        if (entries == null) {
            failWithMessage("Expecting entries parameter not to be null.");
        }

        // check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
        Iterables.instance().assertContainsOnly(info, actual.getEntries(), entries);

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's entries contains <b>only</b> the given NotificationConfigEntry elements in Collection and nothing else in whatever order.
     *
     * @param entries the given elements that should be contained in actual NotificationConfig's entries.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's entries does not contain all given NotificationConfigEntry elements.
     */
    public S hasOnlyEntries(java.util.Collection<? extends NotificationConfigEntry> entries) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given NotificationConfigEntry collection is not null.
        if (entries == null) {
            failWithMessage("Expecting entries parameter not to be null.");
            return myself; // to fool Eclipse "Null pointer access" warning on toArray.
        }

        // check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
        Iterables.instance().assertContainsOnly(info, actual.getEntries(), entries.toArray());

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's entries does not contain the given NotificationConfigEntry elements.
     *
     * @param entries the given elements that should not be in actual NotificationConfig's entries.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's entries contains any given NotificationConfigEntry elements.
     */
    public S doesNotHaveEntries(NotificationConfigEntry... entries) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given NotificationConfigEntry varargs is not null.
        if (entries == null) {
            failWithMessage("Expecting entries parameter not to be null.");
        }

        // check with standard error message (use overridingErrorMessage before contains to set your own message).
        Iterables.instance().assertDoesNotContain(info, actual.getEntries(), entries);

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's entries does not contain the given NotificationConfigEntry elements in Collection.
     *
     * @param entries the given elements that should not be in actual NotificationConfig's entries.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's entries contains any given NotificationConfigEntry elements.
     */
    public S doesNotHaveEntries(java.util.Collection<? extends NotificationConfigEntry> entries) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given NotificationConfigEntry collection is not null.
        if (entries == null) {
            failWithMessage("Expecting entries parameter not to be null.");
            return myself; // to fool Eclipse "Null pointer access" warning on toArray.
        }

        // check with standard error message (use overridingErrorMessage before contains to set your own message).
        Iterables.instance().assertDoesNotContain(info, actual.getEntries(), entries.toArray());

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig has no entries.
     *
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's entries is not empty.
     */
    public S hasNoEntries() {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // we override the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting :\n  <%s>\nnot to have entries but had :\n  <%s>";

        // check
        if (actual.getEntries().iterator().hasNext()) {
            failWithMessage(assertjErrorMessage, actual, actual.getEntries());
        }

        // return the current assertion for method chaining
        return myself;
    }


    /**
     * Verifies that the actual NotificationConfig's filterOuts contains the given String elements.
     *
     * @param filterOuts the given elements that should be contained in actual NotificationConfig's filterOuts.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's filterOuts does not contain all given String elements.
     */
    public S hasFilterOuts(String... filterOuts) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given String varargs is not null.
        if (filterOuts == null) {
            failWithMessage("Expecting filterOuts parameter not to be null.");
        }

        // check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
        Iterables.instance().assertContains(info, actual.getFilterOuts(), filterOuts);

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's filterOuts contains the given String elements in Collection.
     *
     * @param filterOuts the given elements that should be contained in actual NotificationConfig's filterOuts.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's filterOuts does not contain all given String elements.
     */
    public S hasFilterOuts(java.util.Collection<? extends String> filterOuts) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given String collection is not null.
        if (filterOuts == null) {
            failWithMessage("Expecting filterOuts parameter not to be null.");
            return myself; // to fool Eclipse "Null pointer access" warning on toArray.
        }

        // check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
        Iterables.instance().assertContains(info, actual.getFilterOuts(), filterOuts.toArray());

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's filterOuts contains <b>only</b> the given String elements and nothing else in whatever order.
     *
     * @param filterOuts the given elements that should be contained in actual NotificationConfig's filterOuts.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's filterOuts does not contain all given String elements.
     */
    public S hasOnlyFilterOuts(String... filterOuts) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given String varargs is not null.
        if (filterOuts == null) {
            failWithMessage("Expecting filterOuts parameter not to be null.");
        }

        // check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
        Iterables.instance().assertContainsOnly(info, actual.getFilterOuts(), filterOuts);

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's filterOuts contains <b>only</b> the given String elements in Collection and nothing else in whatever order.
     *
     * @param filterOuts the given elements that should be contained in actual NotificationConfig's filterOuts.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's filterOuts does not contain all given String elements.
     */
    public S hasOnlyFilterOuts(java.util.Collection<? extends String> filterOuts) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given String collection is not null.
        if (filterOuts == null) {
            failWithMessage("Expecting filterOuts parameter not to be null.");
            return myself; // to fool Eclipse "Null pointer access" warning on toArray.
        }

        // check with standard error message, to set another message call: info.overridingErrorMessage("my error message");
        Iterables.instance().assertContainsOnly(info, actual.getFilterOuts(), filterOuts.toArray());

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's filterOuts does not contain the given String elements.
     *
     * @param filterOuts the given elements that should not be in actual NotificationConfig's filterOuts.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's filterOuts contains any given String elements.
     */
    public S doesNotHaveFilterOuts(String... filterOuts) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given String varargs is not null.
        if (filterOuts == null) {
            failWithMessage("Expecting filterOuts parameter not to be null.");
        }

        // check with standard error message (use overridingErrorMessage before contains to set your own message).
        Iterables.instance().assertDoesNotContain(info, actual.getFilterOuts(), filterOuts);

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig's filterOuts does not contain the given String elements in Collection.
     *
     * @param filterOuts the given elements that should not be in actual NotificationConfig's filterOuts.
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's filterOuts contains any given String elements.
     */
    public S doesNotHaveFilterOuts(java.util.Collection<? extends String> filterOuts) {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // check that given String collection is not null.
        if (filterOuts == null) {
            failWithMessage("Expecting filterOuts parameter not to be null.");
            return myself; // to fool Eclipse "Null pointer access" warning on toArray.
        }

        // check with standard error message (use overridingErrorMessage before contains to set your own message).
        Iterables.instance().assertDoesNotContain(info, actual.getFilterOuts(), filterOuts.toArray());

        // return the current assertion for method chaining
        return myself;
    }

    /**
     * Verifies that the actual NotificationConfig has no filterOuts.
     *
     * @return this assertion object.
     * @throws AssertionError if the actual NotificationConfig's filterOuts is not empty.
     */
    public S hasNoFilterOuts() {
        // check that actual NotificationConfig we want to make assertions on is not null.
        isNotNull();

        // we override the default error message with a more explicit one
        String assertjErrorMessage = "\nExpecting :\n  <%s>\nnot to have filterOuts but had :\n  <%s>";

        // check
        if (actual.getFilterOuts().iterator().hasNext()) {
            failWithMessage(assertjErrorMessage, actual, actual.getFilterOuts());
        }

        // return the current assertion for method chaining
        return myself;
    }


}
