Java tutorial
/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package com.ok2c.lightmtp.impl.protocol; import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; import org.apache.http.nio.reactor.SessionInputBuffer; import org.apache.http.util.CharArrayBuffer; import org.junit.Assert; import org.junit.Test; /** * Unit tests for {@link SMTPInputBuffer} and {@link SMTPOutputBuffer}. */ public class TestSMTPInOutBuffers { private static ReadableByteChannel newChannel(final String s, final String charset) throws UnsupportedEncodingException { return Channels.newChannel(new ByteArrayInputStream(s.getBytes(charset))); } private static ReadableByteChannel newChannel(final String s) throws UnsupportedEncodingException { return newChannel(s, "US-ASCII"); } @Test public void testReadLineChunks() throws Exception { SessionInputBuffer inbuf = new SMTPInputBuffer(16, 16); ReadableByteChannel channel = newChannel("O\ne\r\nTwo\r\nTh\ree"); inbuf.fill(channel); CharArrayBuffer line = new CharArrayBuffer(64); line.clear(); Assert.assertTrue(inbuf.readLine(line, false)); Assert.assertEquals("O", line.toString()); line.clear(); Assert.assertTrue(inbuf.readLine(line, false)); Assert.assertEquals("e", line.toString()); line.clear(); Assert.assertTrue(inbuf.readLine(line, false)); Assert.assertEquals("Two", line.toString()); line.clear(); Assert.assertFalse(inbuf.readLine(line, false)); channel = newChannel("\r\nFour"); inbuf.fill(channel); line.clear(); Assert.assertTrue(inbuf.readLine(line, false)); Assert.assertEquals("Th\ree", line.toString()); inbuf.fill(channel); line.clear(); Assert.assertTrue(inbuf.readLine(line, true)); Assert.assertEquals("Four", line.toString()); line.clear(); Assert.assertFalse(inbuf.readLine(line, true)); } @Test public void testInBufferClear() throws Exception { SMTPInputBuffer inbuf = new SMTPInputBuffer(16, 16); ReadableByteChannel channel = newChannel("yadayada\r\n"); inbuf.fill(channel); Assert.assertEquals(10, inbuf.length()); inbuf.clear(); Assert.assertEquals(0, inbuf.length()); } @Test public void testOutBufferClear() throws Exception { SMTPOutputBuffer outbuf = new SMTPOutputBuffer(16, 16); outbuf.writeLine("yadayada"); Assert.assertEquals(10, outbuf.length()); outbuf.clear(); Assert.assertEquals(0, outbuf.length()); } }