@@ -0,0 +1,1381 @@
+package org.westmalle.wayland.core.events;%0A%0Aimport org.junit.Test;%0Aimport org.junit.runner.RunWith;%0Aimport org.mockito.InjectMocks;%0Aimport org.mockito.runners.MockitoJUnitRunner;%0A%0Aimport static org.mockito.Mockito.doAnswer;%0Aimport static org.mockito.Mockito.mock;%0Aimport static org.mockito.Mockito.verify;%0Aimport static org.mockito.Mockito.verifyNoMoreInteractions;%0A%0A@RunWith(MockitoJUnitRunner.class)%0Apublic class SignalTest %7B%0A%0A    @InjectMocks%0A    private Signal%3CObject, Slot%3CObject%3E%3E signal;%0A%0A    @Test%0A    public void testEmit() throws Exception %7B%0A        //given%0A        final Object       event = new Object();%0A        final Slot%3CObject%3E slot  = mock(Slot.class);%0A        this.signal.connect(slot);%0A%0A        //when%0A        this.signal.emit(event);%0A%0A        //then%0A        verify(slot).handle(event);%0A    %7D%0A%0A    @Test%0A    public void testEmitUpdateSlot() throws Exception %7B%0A        //given%0A        final Object       event = new Object();%0A        final Slot%3CObject%3E slot  = mock(Slot.class);%0A        doAnswer(invocation -%3E %7B%0A            this.signal.disconnect(slot);%0A            return null;%0A        %7D).when(slot)%0A          .handle(event);%0A        this.signal.connect(slot);%0A%0A        //when%0A        this.signal.emit(event);%0A%0A        //then%0A        verify(slot).handle(event);%0A%0A        //and when%0A        this.signal.emit(event);%0A        verifyNoMoreInteractions(slot);%0A    %7D%0A%7D

add unit test for signal implementation