io.deephaven.base.testing.BaseCachedJMockTestCase Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of deephaven-base-test-utils Show documentation
Show all versions of deephaven-base-test-utils Show documentation
The 'base-test-utils' project
//
// Copyright (c) 2016-2024 Deephaven Data Labs and Patent Pending
//
package io.deephaven.base.testing;
import io.deephaven.base.verify.Assert;
import junit.framework.TestCase;
import org.hamcrest.CoreMatchers;
import org.hamcrest.Matcher;
import org.jmock.Mockery;
import org.jmock.Sequence;
import org.jmock.States;
import org.jmock.api.Imposteriser;
import org.jmock.api.Invocation;
import org.jmock.api.Invokable;
import org.jmock.auto.internal.Mockomatic;
import org.jmock.imposters.ByteBuddyClassImposteriser;
import org.jmock.internal.ExpectationBuilder;
import org.jmock.lib.action.CustomAction;
import org.jmock.lib.concurrent.Synchroniser;
import java.lang.reflect.*;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.function.Supplier;
abstract public class BaseCachedJMockTestCase extends TestCase {
protected final Mockery context;
{
// use an initializer rather than setUp so forgetting to
// call super.setUp won't use the wrong imposteriser
context = new Mockery();
context.setThreadingPolicy(new Synchroniser());
context.setImposteriser(CachingImposteriser.INSTANCE);
new Mockomatic(context).fillIn(this);
}
public T mock(Class tClass) {
return context.mock(tClass);
}
public T mock(Class tClass, String s) {
return context.mock(tClass, s);
}
public States states(String s) {
return context.states(s);
}
public Sequence sequence(String s) {
return context.sequence(s);
}
public void checking(ExpectationBuilder expectationBuilder) {
context.checking(expectationBuilder);
}
public void assertIsSatisfied() {
context.assertIsSatisfied();
}
@Override
protected void tearDown() throws Exception {
context.assertIsSatisfied();
super.tearDown();
}
public static class Expectations extends org.jmock.Expectations {
public static Matcher some(Class type) {
return CoreMatchers.instanceOf(type);
}
public static Matcher any(Class type) {
return CoreMatchers.anyOf(CoreMatchers.instanceOf(type), CoreMatchers.nullValue(type));
}
private static AtomicInteger willDoCounter = new AtomicInteger(0);
public void willDo(final Supplier