// Copyright (C) 2011 - Will Glozer. All rights reserved.
package com.lambdaworks.redis.commands;
import static com.lambdaworks.redis.SortArgs.Builder.alpha;
import static com.lambdaworks.redis.SortArgs.Builder.asc;
import static com.lambdaworks.redis.SortArgs.Builder.by;
import static com.lambdaworks.redis.SortArgs.Builder.desc;
import static com.lambdaworks.redis.SortArgs.Builder.get;
import static com.lambdaworks.redis.SortArgs.Builder.limit;
import static org.assertj.core.api.Assertions.assertThat;
import com.lambdaworks.redis.AbstractRedisClientTest;
import com.lambdaworks.redis.ListStreamingAdapter;
import org.assertj.core.api.Assertions;
import org.junit.Test;
public class SortCommandTest extends AbstractRedisClientTest {
@Test
public void sort() throws Exception {
redis.rpush(key, "3", "2", "1");
assertThat(redis.sort(key)).isEqualTo(list("1", "2", "3"));
assertThat(redis.sort(key, asc())).isEqualTo(list("1", "2", "3"));
}
@Test
public void sortStreaming() throws Exception {
redis.rpush(key, "3", "2", "1");
ListStreamingAdapter<String> streamingAdapter = new ListStreamingAdapter<String>();
Long count = redis.sort(streamingAdapter, key);
assertThat(count.longValue()).isEqualTo(3);
assertThat(streamingAdapter.getList()).isEqualTo(list("1", "2", "3"));
streamingAdapter.getList().clear();
count = redis.sort(streamingAdapter, key, desc());
assertThat(count.longValue()).isEqualTo(3);
assertThat(streamingAdapter.getList()).isEqualTo(list("3", "2", "1"));
}
@Test
public void sortAlpha() throws Exception {
redis.rpush(key, "A", "B", "C");
assertThat(redis.sort(key, alpha().desc())).isEqualTo(list("C", "B", "A"));
}
@Test
public void sortBy() throws Exception {
redis.rpush(key, "foo", "bar", "baz");
redis.set("weight_foo", "8");
redis.set("weight_bar", "4");
redis.set("weight_baz", "2");
assertThat(redis.sort(key, by("weight_*"))).isEqualTo(list("baz", "bar", "foo"));
}
@Test
public void sortDesc() throws Exception {
redis.rpush(key, "1", "2", "3");
assertThat(redis.sort(key, desc())).isEqualTo(list("3", "2", "1"));
}
@Test
public void sortGet() throws Exception {
redis.rpush(key, "1", "2");
redis.set("obj_1", "foo");
redis.set("obj_2", "bar");
assertThat(redis.sort(key, get("obj_*"))).isEqualTo(list("foo", "bar"));
}
@Test
public void sortLimit() throws Exception {
redis.rpush(key, "3", "2", "1");
assertThat(redis.sort(key, limit(1, 2))).isEqualTo(list("2", "3"));
}
@Test
public void sortStore() throws Exception {
redis.rpush("one", "1", "2", "3");
assertThat(redis.sortStore("one", desc(), "two")).isEqualTo(3);
assertThat(redis.lrange("two", 0, -1)).isEqualTo(list("3", "2", "1"));
}
}