// Path: src/main/java/com/lmax/disruptor/SequenceBarrier.java
// public interface SequenceBarrier
// {
//     /**
//      * Wait for the given sequence to be available for consumption.
//      *
//      * @param sequence to wait for
//      * @return the sequence up to which is available
//      * @throws AlertException if a status change has occurred for the Disruptor
//      * @throws InterruptedException if the thread needs awaking on a condition variable.
//      */
//     long waitFor(long sequence) throws AlertException, InterruptedException;
// 
//     /**
//      * Wait for the given sequence to be available for consumption with a time out.
//      *
//      * @param sequence to wait for
//      * @param timeout value
//      * @param units for the timeout value
//      * @return the sequence up to which is available
//      * @throws AlertException if a status change has occurred for the Disruptor
//      * @throws InterruptedException if the thread needs awaking on a condition variable.
//      */
//     long waitFor(long sequence, long timeout, TimeUnit units) throws AlertException, InterruptedException;
// 
//     /**
//      * Delegate a call to the {@link Sequencer#getCursor()}
//      *
//      * @return value of the cursor for entries that have been published.
//      */
//     long getCursor();
// 
//     /**
//      * The current alert status for the barrier.
//      *
//      * @return true if in alert otherwise false.
//      */
//     boolean isAlerted();
// 
//     /**
//      * Alert the {@link EventProcessor}s of a status change and stay in this status until cleared.
//      */
//     void alert();
// 
//     /**
//      * Clear the current alert status.
//      */
//     void clearAlert();
// 
//     /**
//      * Check if an alert has been raised and throw an {@link AlertException} if it has.
//      *
//      * @throws AlertException if alert has been raised.
//      */
//     void checkAlert() throws AlertException;
// }
// 
// Path: src/main/java/com/lmax/disruptor/EventProcessor.java
// public interface EventProcessor extends Runnable
// {
//     /**
//      * Get a reference to the {@link Sequence} being used by this {@link EventProcessor}.
//      *
//      * @return reference to the {@link Sequence} for this {@link EventProcessor}
//      */
//     Sequence getSequence();
// 
//     /**
//      * Signal that this EventProcessor should stop when it has finished consuming at the next clean break.
//      * It will call {@link SequenceBarrier#alert()} to notify the thread to check status.
//      */
//     void halt();
// }
// 
// Path: src/test/java/com/lmax/disruptor/support/TestEvent.java
// public final class TestEvent
// {
//     @Override
//     public String toString()
//     {
//         return "Test Event";
//     }
// 
//     public final static EventFactory<TestEvent> EVENT_FACTORY = new EventFactory<TestEvent>()
//     {
//         public TestEvent newInstance()
//         {
//             return new TestEvent();
//         }
//     };
// }


import com.lmax.disruptor.SequenceBarrier;
import com.lmax.disruptor.EventProcessor;
import com.lmax.disruptor.dsl.stubs.SleepingEventHandler;
import com.lmax.disruptor.support.TestEvent;
import org.jmock.Mockery;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
/*
 * Copyright 2011 LMAX Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.lmax.disruptor.dsl;



public class EventProcessorRepositoryTest
{
    private final Mockery mockery = new Mockery();

    private EventProcessorRepository<TestEvent> eventProcessorRepository;
    private EventProcessor eventProcessor1;
    private EventProcessor eventProcessor2;
    private SleepingEventHandler handler1;
    private SleepingEventHandler handler2;
// Path: src/main/java/com/lmax/disruptor/SequenceBarrier.java
// public interface SequenceBarrier
// {
//     /**
//      * Wait for the given sequence to be available for consumption.
//      *
//      * @param sequence to wait for
//      * @return the sequence up to which is available
//      * @throws AlertException if a status change has occurred for the Disruptor
//      * @throws InterruptedException if the thread needs awaking on a condition variable.
//      */
//     long waitFor(long sequence) throws AlertException, InterruptedException;
// 
//     /**
//      * Wait for the given sequence to be available for consumption with a time out.
//      *
//      * @param sequence to wait for
//      * @param timeout value
//      * @param units for the timeout value
//      * @return the sequence up to which is available
//      * @throws AlertException if a status change has occurred for the Disruptor
//      * @throws InterruptedException if the thread needs awaking on a condition variable.
//      */
//     long waitFor(long sequence, long timeout, TimeUnit units) throws AlertException, InterruptedException;
// 
//     /**
//      * Delegate a call to the {@link Sequencer#getCursor()}
//      *
//      * @return value of the cursor for entries that have been published.
//      */
//     long getCursor();
// 
//     /**
//      * The current alert status for the barrier.
//      *
//      * @return true if in alert otherwise false.
//      */
//     boolean isAlerted();
// 
//     /**
//      * Alert the {@link EventProcessor}s of a status change and stay in this status until cleared.
//      */
//     void alert();
// 
//     /**
//      * Clear the current alert status.
//      */
//     void clearAlert();
// 
//     /**
//      * Check if an alert has been raised and throw an {@link AlertException} if it has.
//      *
//      * @throws AlertException if alert has been raised.
//      */
//     void checkAlert() throws AlertException;
// }
// 
// Path: src/main/java/com/lmax/disruptor/EventProcessor.java
// public interface EventProcessor extends Runnable
// {
//     /**
//      * Get a reference to the {@link Sequence} being used by this {@link EventProcessor}.
//      *
//      * @return reference to the {@link Sequence} for this {@link EventProcessor}
//      */
//     Sequence getSequence();
// 
//     /**
//      * Signal that this EventProcessor should stop when it has finished consuming at the next clean break.
//      * It will call {@link SequenceBarrier#alert()} to notify the thread to check status.
//      */
//     void halt();
// }
// 
// Path: src/test/java/com/lmax/disruptor/support/TestEvent.java
// public final class TestEvent
// {
//     @Override
//     public String toString()
//     {
//         return "Test Event";
//     }
// 
//     public final static EventFactory<TestEvent> EVENT_FACTORY = new EventFactory<TestEvent>()
//     {
//         public TestEvent newInstance()
//         {
//             return new TestEvent();
//         }
//     };
// }


// Path: src/test/java/com/lmax/disruptor/dsl/EventProcessorRepositoryTest.java
import com.lmax.disruptor.SequenceBarrier;
import com.lmax.disruptor.EventProcessor;
import com.lmax.disruptor.dsl.stubs.SleepingEventHandler;
import com.lmax.disruptor.support.TestEvent;
import org.jmock.Mockery;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

/*
 * Copyright 2011 LMAX Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.lmax.disruptor.dsl;



public class EventProcessorRepositoryTest
{
    private final Mockery mockery = new Mockery();

    private EventProcessorRepository<TestEvent> eventProcessorRepository;
    private EventProcessor eventProcessor1;
    private EventProcessor eventProcessor2;
    private SleepingEventHandler handler1;
    private SleepingEventHandler handler2;
    private SequenceBarrier barrier1;