package com.github.bjuvensjo.rsimulator.socket;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.name.Named;
import static org.apache.commons.lang.StringUtils.*;
import org.junit.Before;
import org.junit.Test;
import com.github.bjuvensjo.rsimulator.socket.config.SocketModule;
import java.io.ByteArrayInputStream;
import static org.junit.Assert.assertEquals;
/**
* Created by ei4577 on 05/03/14.
*/
public class RequestReaderTest {
@Inject
@Named("encoding")
private String encoding;
@Inject
@Named("headerLength")
private int headerLength;
@Inject
@Named("headerBodyLengthBeginIndex")
private int headerBodyLengthBeginIndex;
@Inject
@Named("headerBodyLengthEndIndex")
private int headerBodyLengthEndIndex;
@Inject
private RequestReader requestReader;
@Before
public void init() {
Injector injector = Guice.createInjector(new SocketModule());
injector.injectMembers(this);
}
@Test
public void testRead() throws Exception {
String body = "123ABC";
String header = rightPad("", headerBodyLengthBeginIndex) + leftPad(String.valueOf(body.length()), headerBodyLengthEndIndex - headerBodyLengthBeginIndex, "0") + rightPad("", headerLength - headerBodyLengthEndIndex);
byte[] buffer = new byte[header.length() + body.length()];
System.arraycopy(header.getBytes(encoding), 0, buffer, 0, headerLength);
System.arraycopy(body.getBytes(encoding), 0, buffer, headerLength, body.length());
ByteArrayInputStream in = new ByteArrayInputStream(buffer);
RequestReader.Request request = requestReader.read(in);
assertEquals(header, request.getHeader());
assertEquals(body, request.getBody());
}
}