// Path: src/main/java/de/bechte/junit/runners/model/TestClassPool.java
// public final class TestClassPool {
//     private static final Map<Class<?>, TestClass> testClasses =
//             Collections.synchronizedMap(new WeakHashMap<Class<?>, TestClass>());
// 
//     // Avoid instantiation
//     private TestClassPool() {
//         super();
//     }
// 
//     /**
//      * Returns a {@link TestClass} wrapping the given {@code testClass}. {@link TestClass}es will be shared and held
//      * within the pool, to avoid the expensive process that is performed during construction of the instances.
//      *
//      * @param testClass the {@link Class} to create an {@link TestClass} instance for
//      * @return the {@link TestClass} instance
//      * @throws IllegalArgumentException If {@code testClass} is {@code null}.
//      */
//     public static TestClass forClass(final Class<?> testClass) {
//         if (testClass == null)
//             throw new IllegalArgumentException("TestClass must not be null!");
// 
//         if (!testClasses.containsKey(testClass))
//             testClasses.put(testClass, new TestClass(testClass));
// 
//         return testClasses.get(testClass);
//     }
// }
// 
// Path: src/test/java/de/bechte/junit/stubs/singletests/SingleTestWithTimeoutAnnotation.java
// public class SingleTestWithTimeoutAnnotation {
//     @Test(timeout = 1000)
//     public void someTest() {
//     }
// }
// 
// Path: src/test/java/de/bechte/junit/stubs/singletests/SingleTestWithoutAnnotations.java
// public class SingleTestWithoutAnnotations {
//     @Test
//     public void someTest() {
//     }
// }


import de.bechte.junit.runners.model.TestClassPool;
import de.bechte.junit.stubs.singletests.SingleTestWithTimeoutAnnotation;
import de.bechte.junit.stubs.singletests.SingleTestWithoutAnnotations;
import org.junit.Before;
import org.junit.Test;
import org.junit.internal.runners.statements.FailOnTimeout;
import org.junit.runner.Description;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import org.junit.runners.model.TestClass;
import org.mockito.Mock;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
import static org.mockito.MockitoAnnotations.initMocks;
package de.bechte.junit.runners.context.statements.builder;



public class FailOnTimeoutStatementBuilderTest {
    @Mock
    private Object target;
    @Mock private Statement next;
    @Mock private Description description;
    @Mock private RunNotifier notifier;
    @Mock private Test testAnnotation;

    private FailOnTimeoutStatementBuilder builder = new FailOnTimeoutStatementBuilder();

    @Before
// Path: src/main/java/de/bechte/junit/runners/model/TestClassPool.java
// public final class TestClassPool {
//     private static final Map<Class<?>, TestClass> testClasses =
//             Collections.synchronizedMap(new WeakHashMap<Class<?>, TestClass>());
// 
//     // Avoid instantiation
//     private TestClassPool() {
//         super();
//     }
// 
//     /**
//      * Returns a {@link TestClass} wrapping the given {@code testClass}. {@link TestClass}es will be shared and held
//      * within the pool, to avoid the expensive process that is performed during construction of the instances.
//      *
//      * @param testClass the {@link Class} to create an {@link TestClass} instance for
//      * @return the {@link TestClass} instance
//      * @throws IllegalArgumentException If {@code testClass} is {@code null}.
//      */
//     public static TestClass forClass(final Class<?> testClass) {
//         if (testClass == null)
//             throw new IllegalArgumentException("TestClass must not be null!");
// 
//         if (!testClasses.containsKey(testClass))
//             testClasses.put(testClass, new TestClass(testClass));
// 
//         return testClasses.get(testClass);
//     }
// }
// 
// Path: src/test/java/de/bechte/junit/stubs/singletests/SingleTestWithTimeoutAnnotation.java
// public class SingleTestWithTimeoutAnnotation {
//     @Test(timeout = 1000)
//     public void someTest() {
//     }
// }
// 
// Path: src/test/java/de/bechte/junit/stubs/singletests/SingleTestWithoutAnnotations.java
// public class SingleTestWithoutAnnotations {
//     @Test
//     public void someTest() {
//     }
// }


// Path: src/test/java/de/bechte/junit/runners/context/statements/builder/FailOnTimeoutStatementBuilderTest.java
import de.bechte.junit.runners.model.TestClassPool;
import de.bechte.junit.stubs.singletests.SingleTestWithTimeoutAnnotation;
import de.bechte.junit.stubs.singletests.SingleTestWithoutAnnotations;
import org.junit.Before;
import org.junit.Test;
import org.junit.internal.runners.statements.FailOnTimeout;
import org.junit.runner.Description;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import org.junit.runners.model.TestClass;
import org.mockito.Mock;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
import static org.mockito.MockitoAnnotations.initMocks;

package de.bechte.junit.runners.context.statements.builder;



public class FailOnTimeoutStatementBuilderTest {
    @Mock
    private Object target;
    @Mock private Statement next;
    @Mock private Description description;
    @Mock private RunNotifier notifier;
    @Mock private Test testAnnotation;

    private FailOnTimeoutStatementBuilder builder = new FailOnTimeoutStatementBuilder();

    @Before
    public void setUp() throws Exception {