//package newconsumer;
//
//import org.apache.flink.api.common.ExecutionConfig;
//import org.apache.flink.api.common.accumulators.Accumulator;
//import org.apache.flink.api.common.accumulators.DoubleCounter;
//import org.apache.flink.api.common.accumulators.Histogram;
//import org.apache.flink.api.common.accumulators.IntCounter;
//import org.apache.flink.api.common.accumulators.LongCounter;
//import org.apache.flink.api.common.cache.DistributedCache;
//import org.apache.flink.api.common.functions.BroadcastVariableInitializer;
//import org.apache.flink.api.common.functions.RuntimeContext;
//import org.apache.flink.api.common.state.OperatorState;
//import org.apache.flink.api.common.state.StateCheckpointer;
//import org.apache.kafka.copied.common.PartitionInfo;
//import org.apache.kafka.copied.common.TopicPartition;
//import org.junit.Assert;
//import org.junit.Test;
//import org.mockito.Mockito;
//
//import java.io.IOException;
//import java.io.Serializable;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//import static org.mockito.Mockito.mock;
//import static org.mockito.Mockito.when;
//
//public class Tests {
//
// @Test
// public void testAssignment() {
// FlinkKafkaConsumer c = mock(FlinkKafkaConsumer.class);
// FakeRuntimeCtx ctx = new FakeRuntimeCtx();
//
// List<PartitionInfo> parts = partitions(600);
// when(c.getPartitions()).thenReturn(parts);
// when(c.getRuntimeContext()).thenReturn(ctx);
// Mockito.doCallRealMethod().when(c).assignPartitions();
//
// // task 600 doesn't get a partition.
// ctx.tasks = 601;
// List<TopicPartition> assignment = c.assignPartitions();
// for(int i = 0; i < 600; i++) {
// ctx.index = i;
// assignment = c.assignPartitions();
// Assert.assertEquals(1, assignment.size());
// }
// ctx.index = 600;
// assignment = c.assignPartitions();
// Assert.assertEquals(0, assignment.size());
//
//
// // one task needs to get 2 partitions
// ctx.tasks = 599;
// ctx.index = 0;
// Assert.assertEquals(2, c.assignPartitions().size());
// for(int i = 1; i < 599; i++) {
// ctx.index = i;
// Assert.assertEquals(1, c.assignPartitions().size());
// }
//
//
// // 300 partitions for each of the two tasks
// ctx.index = 0;
// ctx.tasks = 2;
// assignment = c.assignPartitions();
// Assert.assertEquals(300, assignment.size());
//
// ctx.index = 1;
// assignment = c.assignPartitions();
// Assert.assertEquals(300, assignment.size());
// }
// private static List<PartitionInfo> partitions(int num) {
// List<PartitionInfo> parts = new ArrayList<PartitionInfo>();
// for(int i = 0; i < num; i++) {
// parts.add(new PartitionInfo("", i, null, null, null));
// }
// return parts;
// }
//
// public static class FakeRuntimeCtx implements RuntimeContext {
//
// public int tasks;
// public int index;
//
// @Override
// public String getTaskName() {
// return null;
// }
//
// @Override
// public int getNumberOfParallelSubtasks() {
// return tasks;
// }
//
// @Override
// public int getIndexOfThisSubtask() {
// return index;
// }
//
// @Override
// public ExecutionConfig getExecutionConfig() {
// return null;
// }
//
// @Override
// public ClassLoader getUserCodeClassLoader() {
// return null;
// }
//
// @Override
// public <V, A extends Serializable> void addAccumulator(String s, Accumulator<V, A> accumulator) {
//
// }
//
// @Override
// public <V, A extends Serializable> Accumulator<V, A> getAccumulator(String s) {
// return null;
// }
//
// @Override
// public Map<String, Accumulator<?, ?>> getAllAccumulators() {
// return null;
// }
//
// @Override
// public IntCounter getIntCounter(String s) {
// return null;
// }
//
// @Override
// public LongCounter getLongCounter(String s) {
// return null;
// }
//
// @Override
// public DoubleCounter getDoubleCounter(String s) {
// return null;
// }
//
// @Override
// public Histogram getHistogram(String s) {
// return null;
// }
//
// @Override
// public <RT> List<RT> getBroadcastVariable(String s) {
// return null;
// }
//
// @Override
// public <T, C> C getBroadcastVariableWithInitializer(String s, BroadcastVariableInitializer<T, C> broadcastVariableInitializer) {
// return null;
// }
//
// @Override
// public DistributedCache getDistributedCache() {
// return null;
// }
//
// @Override
// public <S, C extends Serializable> OperatorState<S> getOperatorState(String s, S s1, boolean b, StateCheckpointer<S, C> stateCheckpointer) throws IOException {
// return null;
// }
//
// @Override
// public <S extends Serializable> OperatorState<S> getOperatorState(String s, S s1, boolean b) throws IOException {
// return null;
// }
// }
//}
//