123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- package me.lortseam.completeconfig.data;
- import com.google.common.collect.Iterables;
- import me.lortseam.completeconfig.api.ConfigContainer;
- import me.lortseam.completeconfig.data.text.TranslationIdentifier;
- import me.lortseam.completeconfig.exception.IllegalAnnotationTargetException;
- import me.lortseam.completeconfig.test.data.containers.*;
- import me.lortseam.completeconfig.test.data.groups.EmptyGroup;
- import me.lortseam.completeconfig.test.data.listeners.EmptyListener;
- import me.lortseam.completeconfig.test.data.listeners.SetterListener;
- import nl.altindag.log.LogCaptor;
- import org.junit.jupiter.api.AfterEach;
- import org.junit.jupiter.api.BeforeEach;
- import org.junit.jupiter.api.Test;
- import static org.assertj.core.api.Assertions.assertThat;
- import static org.junit.jupiter.api.Assertions.*;
- import static org.mockito.Mockito.mock;
- public class BaseCollectionTest {
- private BaseCollection baseCollection;
- private final LogCaptor logCaptor = LogCaptor.forRoot();
- @BeforeEach
- public void beforeEach() {
- baseCollection = new BaseCollection(mock(TranslationIdentifier.class)) {};
- }
- @AfterEach
- public void afterEach() {
- logCaptor.clearLogs();
- }
- @Test
- public void resolve_includeFieldIfAnnotated() {
- baseCollection.resolve(new ContainerWithEntry(), new ContainerWithContainerWithEntry(), new ContainerWithGroupWithEntry());
- assertEquals(2, baseCollection.getEntries().size());
- assertEquals(1, baseCollection.getCollections().size());
- }
- @Test
- public void resolve_excludeFieldIfNotAnnotated() {
- baseCollection.resolve(new ContainerWithField());
- assertTrue(baseCollection.isEmpty());
- }
- @Test
- public void resolve_includeFieldInEntries() {
- baseCollection.resolve(new EntriesContainerWithEntry());
- assertEquals(1, baseCollection.getEntries().size());
- }
- @Test
- public void resolve_excludeFieldInEntriesIfContainer() {
- baseCollection.resolve(new EntriesContainerWithEmptyContainer());
- assertTrue(baseCollection.isEmpty());
- }
- @Test
- public void resolve_excludeFieldInEntriesIfIgnoreAnnotated() {
- baseCollection.resolve(new EntriesContainerWithIgnoredField());
- assertTrue(baseCollection.isEmpty());
- }
- @Test
- public void resolve_excludeFieldInEntriesIfTransient() {
- baseCollection.resolve(new EntriesContainerWithTransientField());
- assertTrue(baseCollection.isEmpty());
- }
- @Test
- public void resolve_includeSuperclassFieldIfNonStatic() {
- baseCollection.resolve(new SubclassOfContainerWithEntry(), new SubclassOfContainerWithContainerWithEntry());
- assertEquals(2, baseCollection.getEntries().size());
- }
- @Test
- public void resolve_excludeSuperclassFieldIfStatic() {
- baseCollection.resolve(new SubclassOfContainerWithStaticEntry(), new SubclassOfContainerWithStaticContainerWithEntry());
- assertTrue(baseCollection.isEmpty());
- }
- @Test
- public void resolve_includeFromMethod() {
- baseCollection.resolve(new ContainerIncludingContainerWithEntry(), new ContainerIncludingGroupWithEntry());
- assertEquals(1, baseCollection.getEntries().size());
- assertEquals(1, baseCollection.getCollections().size());
- }
- @Test
- public void resolve_includeNestedIfStatic() {
- baseCollection.resolve(new ContainerNestingStaticContainerWithEntry());
- assertEquals(1, baseCollection.getEntries().size());
- }
- @Test
- public void resolve_throwIfNestedNonContainer() {
- IllegalAnnotationTargetException exception = assertThrows(IllegalAnnotationTargetException.class, () -> baseCollection.resolve(new ContainerNestingStaticClass()));
- assertEquals("Transitive " + ContainerNestingStaticClass.Class.class + " must implement " + ConfigContainer.class.getSimpleName(), exception.getMessage());
- }
- @Test
- public void resolve_throwIfNestedNonStatic() {
- IllegalAnnotationTargetException exception = assertThrows(IllegalAnnotationTargetException.class, () -> baseCollection.resolve(new ContainerNestingContainerWithEntry()));
- assertEquals("Transitive " + ContainerNestingContainerWithEntry.ContainerWithEntry.class + " must be static", exception.getMessage());
- }
- @Test
- public void resolve_logWarningIfEmpty() {
- baseCollection.resolve(new EmptyGroup());
- assertThat(logCaptor.getWarnLogs()).contains("[CompleteConfig] Group emptyGroup is empty");
- }
- @Test
- public void resolve_listenSetter() {
- SetterListener listener = new SetterListener();
- baseCollection.resolve(listener);
- boolean value = !listener.getValue();
- Iterables.getOnlyElement(baseCollection.getEntries()).setValue(value);
- assertEquals(value, listener.getValue());
- }
- @Test
- public void resolve_doNotUpdateListenerField() {
- EmptyListener listener = new EmptyListener();
- baseCollection.resolve(listener);
- boolean oldValue = listener.getValue();
- Iterables.getOnlyElement(baseCollection.getEntries()).setValue(!oldValue);
- assertEquals(oldValue, listener.getValue());
- }
- }
|