package me.prettyprint.cassandra.model;
import static me.prettyprint.cassandra.utils.StringUtils.bytes;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.Serializer;
import me.prettyprint.hector.api.beans.Rows;
import me.prettyprint.hector.api.query.QueryResult;
import org.apache.cassandra.thrift.SlicePredicate;
import org.apache.cassandra.thrift.SliceRange;
import org.junit.Test;
import org.mockito.Mockito;
public class AbstractSliceQueryTest {
private static final StringSerializer se = StringSerializer.get();
private static final Keyspace ko = Mockito.mock(ExecutingKeyspace.class);
@Test
public void testGetSetPredicate_columnNames() {
ConcreteSliceQueury<String, String, String, Rows<String, String, String>> q =
new ConcreteSliceQueury<String, String, String, Rows<String, String,String>>(ko, se, se, se);
q.setColumnNames("1", "2", "3");
SlicePredicate p = q.getPredicate();
assertEquals(3, p.getColumn_names().size());
assertNull(p.getSlice_range());
}
@Test
public void testGetSetPredicate_range() {
ConcreteSliceQueury<String, String, String, Rows<String, String, String>> q =
new ConcreteSliceQueury<String, String, String, Rows<String, String,String>>(ko, se, se, se);
q.setRange("1", "100", false, 10);
SlicePredicate p = q.getPredicate();
assertNull(p.getColumn_names());
SliceRange range = p.getSlice_range();
assertNotNull(range);
assertArrayEquals(bytes("1"), range.getStart());
assertArrayEquals(bytes("100"), range.getFinish());
assertEquals(10, range.getCount());
}
private static class ConcreteSliceQueury<K, N, V, T> extends AbstractSliceQuery<K, N, V, T> {
ConcreteSliceQueury(Keyspace k, Serializer<K> keySerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer) {
super(k, keySerializer, nameSerializer, valueSerializer);
}
@Override
public QueryResult<T> execute() {
return null;
}
}
}