package com.lambdaworks.redis.commands.rx; import org.junit.Test; import com.lambdaworks.redis.api.rx.RedisReactiveCommands; import com.lambdaworks.redis.api.sync.RedisCommands; import com.lambdaworks.redis.commands.CustomCommandTest; import com.lambdaworks.redis.output.ValueListOutput; import com.lambdaworks.redis.output.ValueOutput; import com.lambdaworks.redis.protocol.CommandArgs; import com.lambdaworks.redis.protocol.CommandType; import rx.Observable; import rx.observers.TestSubscriber; /** * @author Mark Paluch */ public class CustomRxCommandTest extends CustomCommandTest { @Override protected RedisCommands<String, String> connect() { return RxSyncInvocationHandler.sync(client.connectAsync().getStatefulConnection()); } @Test public void dispatchGetAndSet() throws Exception { redis.set(key, value); RedisReactiveCommands<String, String> reactive = redis.getStatefulConnection().reactive(); Observable<String> observable = reactive.dispatch(CommandType.GET, new ValueOutput<>(utf8StringCodec), new CommandArgs<>(utf8StringCodec).addKey(key)); TestSubscriber<String> testSubscriber = TestSubscriber.create(); observable.subscribe(testSubscriber); testSubscriber.awaitTerminalEvent(); testSubscriber.assertCompleted(); testSubscriber.assertValue(value); } @Test public void dispatchList() throws Exception { redis.rpush(key, "a", "b", "c"); RedisReactiveCommands<String, String> reactive = redis.getStatefulConnection().reactive(); Observable<String> observable = reactive.dispatch(CommandType.LRANGE, new ValueListOutput<>(utf8StringCodec), new CommandArgs<>(utf8StringCodec).addKey(key).add(0).add(-1)); TestSubscriber<String> testSubscriber = TestSubscriber.create(); observable.subscribe(testSubscriber); testSubscriber.awaitTerminalEvent(); testSubscriber.assertCompleted(); testSubscriber.assertValues("a", "b", "c"); } }