package org.squirrelframework.foundation.component; import org.junit.Before; import org.junit.Test; import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.squirrelframework.foundation.component.Heartbeat; import org.squirrelframework.foundation.component.SquirrelProvider; public class HeartBeatTest { interface MethodCalls { void method1(); void method2(); void method3(); void method4(); } @Mock MethodCalls methodCalls; @Before public void setup() { MockitoAnnotations.initMocks(this); } @Test public void testHeartBeat() { InOrder callSequence = Mockito.inOrder(methodCalls); Heartbeat hb = SquirrelProvider.getInstance().newInstance(Heartbeat.class); hb.begin(); hb.defer(new Runnable() { @Override public void run() { methodCalls.method1(); } }); hb.defer(new Runnable() { @Override public void run() { methodCalls.method3(); } }); callSequence.verify(methodCalls, Mockito.times(0)).method1(); callSequence.verify(methodCalls, Mockito.times(0)).method2(); callSequence.verify(methodCalls, Mockito.times(0)).method3(); callSequence.verify(methodCalls, Mockito.times(0)).method4(); hb.begin(); hb.defer(new Runnable() { @Override public void run() { methodCalls.method2(); } }); hb.defer(new Runnable() { @Override public void run() { methodCalls.method4(); } }); callSequence.verify(methodCalls, Mockito.times(0)).method1(); callSequence.verify(methodCalls, Mockito.times(0)).method2(); callSequence.verify(methodCalls, Mockito.times(0)).method3(); callSequence.verify(methodCalls, Mockito.times(0)).method4(); hb.execute(); callSequence.verify(methodCalls, Mockito.times(0)).method1(); callSequence.verify(methodCalls, Mockito.times(1)).method2(); callSequence.verify(methodCalls, Mockito.times(0)).method3(); callSequence.verify(methodCalls, Mockito.times(1)).method4(); hb.execute(); callSequence.verify(methodCalls, Mockito.times(1)).method1(); callSequence.verify(methodCalls, Mockito.times(0)).method2(); callSequence.verify(methodCalls, Mockito.times(1)).method3(); callSequence.verify(methodCalls, Mockito.times(0)).method4(); } }