@@ -0,0 +1,2503 @@
+/*%0A * Copyright 2019, TeamDev. All rights reserved.%0A *%0A * Redistribution and use in source and/or binary forms, with or without%0A * modification, must retain the above copyright notice and the following%0A * disclaimer.%0A *%0A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS%0A * %22AS IS%22 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT%0A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR%0A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT%0A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,%0A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT%0A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,%0A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY%0A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT%0A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE%0A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.%0A */%0A%0Apackage io.spine.validate;%0A%0Aimport org.junit.jupiter.api.BeforeEach;%0Aimport org.junit.jupiter.api.DisplayName;%0Aimport org.junit.jupiter.api.Test;%0A%0Aimport java.util.Set;%0Aimport java.util.function.Function;%0A%0Aimport static com.google.common.truth.Truth.assertThat;%0Aimport static org.junit.jupiter.api.Assertions.assertDoesNotThrow;%0A%0A@DisplayName(%22Interface %60ValidatingOptions%60 should%22)%0Aclass ValidatingOptionsTest %7B%0A%0A    private ValidatingOptions options;%0A%0A    @BeforeEach%0A    void setUp() %7B%0A        options = new ValidatingOptions() %7B%7D;%0A    %7D%0A%0A    @Test%0A    @DisplayName(%22have no abstract methods%22)%0A    void noAbstract() %7B%0A        // Actually, just has to at least compile.%0A        assertDoesNotThrow(() -%3E new ValidatingOptions() %7B%7D);%0A    %7D%0A%0A    @Test%0A    @DisplayName(%22provide empty sets of options for all types by default%22)%0A    void provideEmptySets() %7B%0A        assetEmpty(ValidatingOptions::forBoolean);%0A        assetEmpty(ValidatingOptions::forByteString);%0A        assetEmpty(ValidatingOptions::forDouble);%0A        assetEmpty(ValidatingOptions::forEnum);%0A        assetEmpty(ValidatingOptions::forFloat);%0A        assetEmpty(ValidatingOptions::forInt);%0A        assetEmpty(ValidatingOptions::forLong);%0A        assetEmpty(ValidatingOptions::forMessage);%0A        assetEmpty(ValidatingOptions::forString);%0A    %7D%0A%0A    private void assetEmpty(Function%3CValidatingOptions, Set%3C?%3E%3E typeSelector) %7B%0A        Set%3C?%3E result = typeSelector.apply(options);%0A        assertThat(result).isEmpty();%0A    %7D%0A%7D%0A

Add more tests.