package org.jbehave.core.steps;
import org.jbehave.core.model.TableTransformers;
import org.jbehave.core.steps.ParameterConverters.ParameterConverter;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class ConcurrencyBehaviour {
@Test
public void shouldAllowConcurrentAdditionOfParameterConvertersInThreadSafeMode() {
final ParameterConverters parameterConverters = new ParameterConverters(new TableTransformers(), true);
final boolean[] active = new boolean[] { true };
final ParameterConverter[] toAdd = new ParameterConverter[] { mock(ParameterConverter.class, "one"),
mock(ParameterConverter.class, "two"), mock(ParameterConverter.class, "three") };
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while (active[0]) {
parameterConverters.addConverters(toAdd);
}
}
});
t.start();
parameterConverters.convert("test", String.class);
active[0] = false;
}
}