/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portal.kernel.io.unsync; import com.liferay.portal.kernel.util.StringPool; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.StringWriter; import java.nio.CharBuffer; import java.util.Arrays; import org.junit.Assert; import org.junit.Test; /** * @author Shuyang Zhou */ public class UnsyncCharArrayWriterTest { @Test public void testAppendChar() { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); unsyncCharArrayWriter.append('a'); Assert.assertEquals(1, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); unsyncCharArrayWriter.append('b'); Assert.assertEquals(2, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); Assert.assertEquals('b', unsyncCharArrayWriter.buffer[1]); } @Test public void testAppendCharSequence() { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); unsyncCharArrayWriter.append(new StringBuilder("ab")); Assert.assertEquals(2, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); Assert.assertEquals('b', unsyncCharArrayWriter.buffer[1]); unsyncCharArrayWriter.append(new StringBuilder("cd")); Assert.assertEquals(4, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); Assert.assertEquals('b', unsyncCharArrayWriter.buffer[1]); Assert.assertEquals('c', unsyncCharArrayWriter.buffer[2]); Assert.assertEquals('d', unsyncCharArrayWriter.buffer[3]); } @Test public void testConstructor() { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); Assert.assertEquals(0, unsyncCharArrayWriter.size()); Assert.assertEquals(32, unsyncCharArrayWriter.buffer.length); unsyncCharArrayWriter = new UnsyncCharArrayWriter(64); Assert.assertEquals(0, unsyncCharArrayWriter.size()); Assert.assertEquals(64, unsyncCharArrayWriter.buffer.length); } @Test public void testReset() { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); unsyncCharArrayWriter.write("test1"); Assert.assertEquals(5, unsyncCharArrayWriter.size()); unsyncCharArrayWriter.reset(); Assert.assertEquals(0, unsyncCharArrayWriter.size()); } @Test public void testToCharBuffer() { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); unsyncCharArrayWriter.write("test1"); CharBuffer charBuffer = unsyncCharArrayWriter.toCharBuffer(); Assert.assertEquals(unsyncCharArrayWriter.buffer, charBuffer.array()); Assert.assertEquals(0, charBuffer.position()); Assert.assertEquals(5, charBuffer.limit()); Assert.assertEquals("test1", charBuffer.toString()); } @Test public void testToString() { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); unsyncCharArrayWriter.write("test1"); Assert.assertEquals("test1", unsyncCharArrayWriter.toString()); } @Test public void testWriteChar() { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); unsyncCharArrayWriter.write('a'); Assert.assertEquals(1, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); unsyncCharArrayWriter.write('b'); Assert.assertEquals(2, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); Assert.assertEquals('b', unsyncCharArrayWriter.buffer[1]); } @Test public void testWriteCharArray() { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); unsyncCharArrayWriter.write("ab".toCharArray()); Assert.assertEquals(2, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); Assert.assertEquals('b', unsyncCharArrayWriter.buffer[1]); unsyncCharArrayWriter.write("cd".toCharArray()); Assert.assertEquals(4, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); Assert.assertEquals('b', unsyncCharArrayWriter.buffer[1]); Assert.assertEquals('c', unsyncCharArrayWriter.buffer[2]); Assert.assertEquals('d', unsyncCharArrayWriter.buffer[3]); } @Test public void testWriteString() { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); unsyncCharArrayWriter.write("ab"); Assert.assertEquals(2, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); Assert.assertEquals('b', unsyncCharArrayWriter.buffer[1]); unsyncCharArrayWriter.write("cd"); Assert.assertEquals(4, unsyncCharArrayWriter.size()); Assert.assertEquals('a', unsyncCharArrayWriter.buffer[0]); Assert.assertEquals('b', unsyncCharArrayWriter.buffer[1]); Assert.assertEquals('c', unsyncCharArrayWriter.buffer[2]); Assert.assertEquals('d', unsyncCharArrayWriter.buffer[3]); } @Test public void testWriteTo() throws IOException { UnsyncCharArrayWriter unsyncCharArrayWriter = new UnsyncCharArrayWriter(); unsyncCharArrayWriter.write("abcd"); CharBuffer charBuffer = CharBuffer.allocate(2); int length = unsyncCharArrayWriter.writeTo(charBuffer); Assert.assertEquals(2, length); Assert.assertEquals(2, charBuffer.position()); Assert.assertEquals(2, charBuffer.limit()); charBuffer.position(0); Assert.assertEquals("ab", charBuffer.toString()); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); length = unsyncCharArrayWriter.writeTo( byteArrayOutputStream, StringPool.UTF8); Assert.assertEquals(4, length); Assert.assertEquals(4, byteArrayOutputStream.size()); Assert.assertTrue( Arrays.equals( "abcd".getBytes(), byteArrayOutputStream.toByteArray())); StringWriter stringWriter = new StringWriter(); length = unsyncCharArrayWriter.writeTo(stringWriter); Assert.assertEquals(4, length); Assert.assertEquals("abcd", stringWriter.toString()); } }