package rewards.internal.aspects;
import junit.framework.TestCase;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.easymock.EasyMock;
import rewards.internal.monitor.jamon.JamonMonitorFactory;
/**
* Unit test to test the behavior of the RepositoryPerformanceMonitor aspect in isolation.
*/
public class RepositoryPerformanceMonitorTest extends TestCase {
public void testMonitor() throws Throwable {
JamonMonitorFactory monitorFactory = new JamonMonitorFactory();
RepositoryPerformanceMonitor performanceMonitor = new RepositoryPerformanceMonitor(monitorFactory);
Signature signature = EasyMock.createMock(Signature.class);
ProceedingJoinPoint targetMethod = EasyMock.createMock(ProceedingJoinPoint.class);
EasyMock.expect(targetMethod.getSignature()).andReturn(signature);
EasyMock.expect(signature.getDeclaringType()).andReturn(Object.class);
EasyMock.expect(signature.getName()).andReturn("hashCode");
EasyMock.expect(targetMethod.proceed()).andReturn(new Object());
EasyMock.replay(signature, targetMethod);
performanceMonitor.monitor(targetMethod);
EasyMock.verify(signature, targetMethod);
}
}