package org.threadly.concurrent.wrapper.traceability;
import static org.junit.Assert.*;
import org.junit.Test;
import org.threadly.test.concurrent.TestRunnable;
import org.threadly.util.StringUtils;
@SuppressWarnings("javadoc")
public class ThreadRenamingRunnableTest {
@Test
public void renameReplaceAndResetTest() {
final String originalName = Thread.currentThread().getName();
final String newName = StringUtils.makeRandomString(5);
TestRunnable tr = new TestRunnable() {
@Override
public void handleRunStart() {
assertEquals(newName, Thread.currentThread().getName());
}
};
assertEquals(originalName, Thread.currentThread().getName());
new ThreadRenamingRunnable(tr, newName, true).run();
assertTrue(tr.ranOnce());
}
@Test
public void renamePrependAndResetTest() {
final String originalName = Thread.currentThread().getName();
final String newName = StringUtils.makeRandomString(5);
TestRunnable tr = new TestRunnable() {
@Override
public void handleRunStart() {
assertTrue(Thread.currentThread().getName().startsWith(newName));
assertTrue(Thread.currentThread().getName().contains(originalName));
}
};
assertEquals(originalName, Thread.currentThread().getName());
new ThreadRenamingRunnable(tr, newName, false).run();
assertTrue(tr.ranOnce());
}
@Test
public void getContainedRunnableTest() {
TestRunnable tr = new TestRunnable();
assertTrue(tr == new ThreadRenamingRunnable(tr, "foo", false).getContainedRunnable());
}
}