// Path: src/test/java/com/lmax/disruptor/support/DaemonThreadFactory.java
// public final class DaemonThreadFactory implements ThreadFactory
// {
//     @Override
//     public Thread newThread(final Runnable r)
//     {
//         Thread t = new Thread(r);
//         t.setDaemon(true);
//         return t;
//     }
// }
// 
// Path: src/test/java/com/lmax/disruptor/support/StubEvent.java
// public final class StubEvent
// {
//     private int value;
//     private String testString;
// 
//     public StubEvent(int i)
//     {
//         this.value = i;
//     }
// 
//     public void copy(StubEvent event)
//     {
//         value = event.value;
//     }
// 
//     public int getValue()
//     {
//         return value;
//     }
// 
//     public void setValue(int value)
//     {
//         this.value = value;
//     }
// 
//     public String getTestString()
//     {
//         return testString;
//     }
// 
//     public void setTestString(final String testString)
//     {
//         this.testString = testString;
//     }
// 
//     public final static EventFactory<StubEvent> EVENT_FACTORY = new EventFactory<StubEvent>()
//     {
//         public StubEvent newInstance()
//         {
//             return new StubEvent(-1);
//         }
//     };
// 
//     @Override
//     public int hashCode()
//     {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + value;
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj)
//     {
//         if (this == obj) return true;
//         if (obj == null) return false;
//         if (getClass() != obj.getClass()) return false;
//         StubEvent other = (StubEvent)obj;
// 
//         return value == other.value;
//     }
// }
// 
// Path: src/test/java/com/lmax/disruptor/support/TestWaiter.java
// public final class TestWaiter implements Callable<List<StubEvent>>
// {
//     private final long toWaitForSequence;
//     private final long initialSequence;
//     private final CyclicBarrier cyclicBarrier;
//     private final SequenceBarrier sequenceBarrier;
//     private final RingBuffer<StubEvent> ringBuffer;
// 
//     public TestWaiter(final CyclicBarrier cyclicBarrier,
//                       final SequenceBarrier sequenceBarrier,
//                       final RingBuffer<StubEvent> ringBuffer,
//                       final long initialSequence,
//                       final long toWaitForSequence)
//     {
//         this.cyclicBarrier = cyclicBarrier;
//         this.initialSequence = initialSequence;
//         this.ringBuffer = ringBuffer;
//         this.toWaitForSequence = toWaitForSequence;
//         this.sequenceBarrier = sequenceBarrier;
//     }
// 
//     @Override
//     public List<StubEvent> call() throws Exception
//     {
//         cyclicBarrier.await();
//         sequenceBarrier.waitFor(toWaitForSequence);
// 
//         final List<StubEvent> messages = new ArrayList<StubEvent>();
//         for (long l = initialSequence; l <= toWaitForSequence; l++)
//         {
//             messages.add(ringBuffer.get(l));
//         }
// 
//         return messages;
//     }
// }


import java.util.List;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicBoolean;
import com.lmax.disruptor.support.DaemonThreadFactory;
import com.lmax.disruptor.support.StubEvent;
import com.lmax.disruptor.support.TestWaiter;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
/*
 * 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;




public class RingBufferTest
{
// Path: src/test/java/com/lmax/disruptor/support/DaemonThreadFactory.java
// public final class DaemonThreadFactory implements ThreadFactory
// {
//     @Override
//     public Thread newThread(final Runnable r)
//     {
//         Thread t = new Thread(r);
//         t.setDaemon(true);
//         return t;
//     }
// }
// 
// Path: src/test/java/com/lmax/disruptor/support/StubEvent.java
// public final class StubEvent
// {
//     private int value;
//     private String testString;
// 
//     public StubEvent(int i)
//     {
//         this.value = i;
//     }
// 
//     public void copy(StubEvent event)
//     {
//         value = event.value;
//     }
// 
//     public int getValue()
//     {
//         return value;
//     }
// 
//     public void setValue(int value)
//     {
//         this.value = value;
//     }
// 
//     public String getTestString()
//     {
//         return testString;
//     }
// 
//     public void setTestString(final String testString)
//     {
//         this.testString = testString;
//     }
// 
//     public final static EventFactory<StubEvent> EVENT_FACTORY = new EventFactory<StubEvent>()
//     {
//         public StubEvent newInstance()
//         {
//             return new StubEvent(-1);
//         }
//     };
// 
//     @Override
//     public int hashCode()
//     {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + value;
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj)
//     {
//         if (this == obj) return true;
//         if (obj == null) return false;
//         if (getClass() != obj.getClass()) return false;
//         StubEvent other = (StubEvent)obj;
// 
//         return value == other.value;
//     }
// }
// 
// Path: src/test/java/com/lmax/disruptor/support/TestWaiter.java
// public final class TestWaiter implements Callable<List<StubEvent>>
// {
//     private final long toWaitForSequence;
//     private final long initialSequence;
//     private final CyclicBarrier cyclicBarrier;
//     private final SequenceBarrier sequenceBarrier;
//     private final RingBuffer<StubEvent> ringBuffer;
// 
//     public TestWaiter(final CyclicBarrier cyclicBarrier,
//                       final SequenceBarrier sequenceBarrier,
//                       final RingBuffer<StubEvent> ringBuffer,
//                       final long initialSequence,
//                       final long toWaitForSequence)
//     {
//         this.cyclicBarrier = cyclicBarrier;
//         this.initialSequence = initialSequence;
//         this.ringBuffer = ringBuffer;
//         this.toWaitForSequence = toWaitForSequence;
//         this.sequenceBarrier = sequenceBarrier;
//     }
// 
//     @Override
//     public List<StubEvent> call() throws Exception
//     {
//         cyclicBarrier.await();
//         sequenceBarrier.waitFor(toWaitForSequence);
// 
//         final List<StubEvent> messages = new ArrayList<StubEvent>();
//         for (long l = initialSequence; l <= toWaitForSequence; l++)
//         {
//             messages.add(ringBuffer.get(l));
//         }
// 
//         return messages;
//     }
// }


// Path: src/test/java/com/lmax/disruptor/RingBufferTest.java
import java.util.List;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicBoolean;
import com.lmax.disruptor.support.DaemonThreadFactory;
import com.lmax.disruptor.support.StubEvent;
import com.lmax.disruptor.support.TestWaiter;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;

/*
 * 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;




public class RingBufferTest
{
    private final ExecutorService EXECUTOR = Executors.newSingleThreadExecutor(new DaemonThreadFactory());