    @Test
    public void testCheckReset_ONLY_AFTER_REVERSION() {


        SyncTrigger syncTrigger = new SyncTrigger(
                () -> mockTrigger.triggered(),
                () -> mockThreshold.shouldTrigger(),
                ONLY_AFTER_REVERSION);

        //no trigger
        when(mockThreshold.shouldTrigger()).thenReturn(false);
        syncTrigger.check();
        verify(mockTrigger, never()).triggered();
        verify(mockThreshold, times(1)).shouldTrigger();
        reset(mockTrigger);
        reset(mockThreshold);

        //trigger
        when(mockThreshold.shouldTrigger()).thenReturn(true);
        syncTrigger.check();
        verify(mockTrigger, times(1)).triggered();
        verify(mockThreshold, times(1)).shouldTrigger();
        reset(mockTrigger);
        reset(mockThreshold);

        //no reset, still above threshold
        when(mockThreshold.shouldTrigger()).thenReturn(true);
        syncTrigger.check();
        verify(mockTrigger, never()).triggered();
        verify(mockThreshold, times(1)).shouldTrigger();
        reset(mockTrigger);
        reset(mockThreshold);

        //reset, no trigger
        when(mockThreshold.shouldTrigger()).thenReturn(false);
        syncTrigger.check();
        verify(mockTrigger, never()).triggered();
        verify(mockThreshold, times(1)).shouldTrigger();
        reset(mockTrigger);
        reset(mockThreshold);

        //trigger
        when(mockThreshold.shouldTrigger()).thenReturn(true);
        syncTrigger.check();
        verify(mockTrigger, times(1)).triggered();
        verify(mockThreshold, times(1)).shouldTrigger();
        reset(mockTrigger);
        reset(mockThreshold);
    }