/**
* Copyright 2015 Red Hat, Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package io.vertx.test.redis;
import io.vertx.core.buffer.Buffer;
import io.vertx.redis.impl.ReplyParser;
import io.vertx.test.core.VertxTestBase;
import org.junit.Ignore;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
public class ReplyParserTest extends VertxTestBase {
@Test
public void testArrayArrayParser() {
Buffer b = Buffer.buffer();
b.appendString(
"*2\r\n" +
"*3\r\n" +
":1\r\n" +
":2\r\n" +
":3\r\n" +
"*2\r\n" +
"+Foo\r\n" +
"-Bar\r\n");
ReplyParser parser = new ReplyParser(reply -> testComplete());
parser.handle(b);
await();
}
@Test
public void testArrayArrayEmptyParser() {
Buffer b = Buffer.buffer();
b.appendString(
"*1\r\n" +
"*0\r\n");
ReplyParser parser = new ReplyParser(reply -> testComplete());
parser.handle(b);
await();
}
@Test
@Ignore
public void testCleanupInternalBuffer() {
// this test cannot really be automated
// in order to verify this one needs to set breaktpoints on the parser
AtomicInteger cnt = new AtomicInteger(0);
ReplyParser parser = new ReplyParser(reply -> {
if (cnt.incrementAndGet() == 2) {
testComplete();
}
});
List<String> parts = Arrays.asList(
":1",
// second message
"\r\n:1",
// third
"\r\n:1\r\n"
);
for (String part : parts) {
parser.handle(Buffer.buffer().appendString(part));
}
await();
}
}