public void testMultibyteCodedReadWriteLine() throws Exception {
final String s1 = constructString(SWISS_GERMAN_HELLO);
final String s2 = constructString(RUSSIAN_HELLO);
final String s3 = "Like hello and stuff";
final SessionOutputBufferMock outbuffer = new SessionOutputBufferMock(Consts.UTF_8);
final CharArrayBuffer chbuffer = new CharArrayBuffer(16);
for (int i = 0; i < 10; i++) {
chbuffer.clear();
chbuffer.append(s1);
outbuffer.writeLine(chbuffer);
chbuffer.clear();
chbuffer.append(s2);
outbuffer.writeLine(chbuffer);
chbuffer.clear();
chbuffer.append(s3);
outbuffer.writeLine(chbuffer);
}
outbuffer.flush();
final long bytesWritten = outbuffer.getMetrics().getBytesTransferred();
final long expected = ((s1.getBytes(Consts.UTF_8).length + 2)+
(s2.getBytes(Consts.UTF_8).length + 2) +
(s3.getBytes(Consts.UTF_8).length + 2)) * 10;
Assert.assertEquals(expected, bytesWritten);
final SessionInputBufferMock inbuffer = new SessionInputBufferMock(
outbuffer.getData(), Consts.UTF_8);
for (int i = 0; i < 10; i++) {
Assert.assertEquals(s1, inbuffer.readLine());
Assert.assertEquals(s2, inbuffer.readLine());
Assert.assertEquals(s3, inbuffer.readLine());