// 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/main/java/com/lmax/disruptor/util/Util.java
// public final class Util
// {
//     /**
//      * Calculate the next power of 2, greater than or equal to x.<p>
//      * From Hacker's Delight, Chapter 3, Harry S. Warren Jr.
//      *
//      * @param x Value to round up
//      * @return The next power of 2 from x inclusive
//      */
//     public static int ceilingNextPowerOfTwo(final int x)
//     {
//         return 1 << (32 - Integer.numberOfLeadingZeros(x - 1));
//     }
// 
//     /**
//      * Get the minimum sequence from an array of {@link com.lmax.disruptor.Sequence}s.
//      *
//      * @param sequences to compare.
//      * @return the minimum sequence found or Long.MAX_VALUE if the array is empty.
//      */
//     public static long getMinimumSequence(final Sequence[] sequences)
//     {
//         long minimum = Long.MAX_VALUE;
// 
//         for (Sequence sequence : sequences)
//         {
//             long value = sequence.get();
//             minimum = minimum < value ? minimum : value;
//         }
// 
//         return minimum;
//     }
// 
//     /**
//      * Get an array of {@link Sequence}s for the passed {@link EventProcessor}s
//      *
//      * @param processors for which to get the sequences
//      * @return the array of {@link Sequence}s
//      */
//     public static Sequence[] getSequencesFor(final EventProcessor... processors)
//     {
//         Sequence[] sequences = new Sequence[processors.length];
//         for (int i = 0; i < sequences.length; i++)
//         {
//             sequences[i] = processors[i].getSequence();
//         }
// 
//         return sequences;
//     }
// }


import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import com.lmax.disruptor.support.StubEvent;
import com.lmax.disruptor.util.Util;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
/*
 * 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;





@RunWith(JMock.class)
public final class SequenceBarrierTest
{
    private Mockery context = new Mockery();
// 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/main/java/com/lmax/disruptor/util/Util.java
// public final class Util
// {
//     /**
//      * Calculate the next power of 2, greater than or equal to x.<p>
//      * From Hacker's Delight, Chapter 3, Harry S. Warren Jr.
//      *
//      * @param x Value to round up
//      * @return The next power of 2 from x inclusive
//      */
//     public static int ceilingNextPowerOfTwo(final int x)
//     {
//         return 1 << (32 - Integer.numberOfLeadingZeros(x - 1));
//     }
// 
//     /**
//      * Get the minimum sequence from an array of {@link com.lmax.disruptor.Sequence}s.
//      *
//      * @param sequences to compare.
//      * @return the minimum sequence found or Long.MAX_VALUE if the array is empty.
//      */
//     public static long getMinimumSequence(final Sequence[] sequences)
//     {
//         long minimum = Long.MAX_VALUE;
// 
//         for (Sequence sequence : sequences)
//         {
//             long value = sequence.get();
//             minimum = minimum < value ? minimum : value;
//         }
// 
//         return minimum;
//     }
// 
//     /**
//      * Get an array of {@link Sequence}s for the passed {@link EventProcessor}s
//      *
//      * @param processors for which to get the sequences
//      * @return the array of {@link Sequence}s
//      */
//     public static Sequence[] getSequencesFor(final EventProcessor... processors)
//     {
//         Sequence[] sequences = new Sequence[processors.length];
//         for (int i = 0; i < sequences.length; i++)
//         {
//             sequences[i] = processors[i].getSequence();
//         }
// 
//         return sequences;
//     }
// }


// Path: src/test/java/com/lmax/disruptor/SequenceBarrierTest.java
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import com.lmax.disruptor.support.StubEvent;
import com.lmax.disruptor.util.Util;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

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





@RunWith(JMock.class)
public final class SequenceBarrierTest
{
    private Mockery context = new Mockery();
    private RingBuffer<StubEvent> ringBuffer = new RingBuffer<StubEvent>(StubEvent.EVENT_FACTORY, 64);