package model; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; public class GroupObserverTest { private GroupObserver target; private MockObserver obsInt; private MockObserver obsStr; private MockObserver obsObs; private MockObserver obsArrList; private MockObserver obsList; @BeforeEach void setup() { target = new GroupObserver(); obsInt = new MockObserver<>(); obsStr = new MockObserver<>(); obsObs = new MockObserver<>(); obsArrList = new MockObserver<>(); obsList = new MockObserver<>(); target.register(Integer.class, obsInt); target.register(String.class, obsStr); target.register(Observer.class, obsObs); target.register(List.class, obsList); target.register(ArrayList.class, obsArrList); } @Test void testRegister() { assertEquals(5, target.getRegisteredObserverCount()); } @Test void testAccept() { target.accept(this, Observer.DIRECTION_CHANGE, 100); assertEquals(0, obsInt.getCount()); assertEquals(0, obsStr.getCount()); target.accept("123", Observer.DIRECTION_CHANGE, 1000); obsStr.assertCalled(Observer.DIRECTION_CHANGE); assertEquals(0, obsInt.getCount()); assertEquals(1000, obsStr.getIndex()); target.accept(114514, Observer.DIRECTION_ADD, 1919810); obsInt.assertCalled(Observer.DIRECTION_ADD); assertEquals(1919810, obsInt.getIndex()); target.accept(obsInt, Observer.DIRECTION_CHANGE, 1); obsObs.assertCalled(Observer.DIRECTION_CHANGE); target.accept(new ArrayList<>(), Observer.DIRECTION_CHANGE, 2); obsArrList.assertCalled(Observer.DIRECTION_CHANGE); assertEquals(0, obsList.getCount()); } }