You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gh...@apache.org on 2006/04/25 00:24:24 UTC

svn commit: r396703 - in /incubator/harmony/enhanced/classlib/trunk/modules/luni/src: main/java/java/io/ test/java/tests/api/java/io/

Author: gharley
Date: Mon Apr 24 15:24:07 2006
New Revision: 396703

URL: http://svn.apache.org/viewcvs?rev=396703&view=rev
Log:
HARMONY-230 : Some classes in java.io need to implement Appendable interface

Added:
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/WriterTest.java   (with props)
Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/CharArrayWriter.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/StringWriter.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Writer.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/AllTests.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/CharArrayWriterTest.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintStreamTest.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintWriterTest.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/StringWriterTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/CharArrayWriter.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/CharArrayWriter.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/CharArrayWriter.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/CharArrayWriter.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@
  * 
  */
 public class CharArrayWriter extends Writer {
+	
 	/**
 	 * Buffer for characters
 	 */
@@ -227,5 +228,73 @@
 		synchronized (lock) {
 			out.write(buf, 0, count);
 		}
+	}
+    
+	/**
+	 * Append a char <code>c</code>to the CharArrayWriter. The
+	 * CharArrayWriter.append(<code>c</code>) works the same way as
+	 * CharArrayWriter.write(<code>c</code>).
+	 * 
+	 * @override Writer.append
+	 * @param c
+	 *            The character appended to the CharArrayWriter.
+	 * @return The CharArrayWriter.
+	 */
+	public CharArrayWriter append(char c) {
+	    write(c);
+	    return this;
+	}
+
+	/**
+	 * Append a CharSequence <code>csq</code> to the CharArrayWriter. The
+	 * CharArrayWriter.append(<code>csq</code>) works the same way as
+	 * CharArrayWriter.write(<code>csq</code>.toString()). If
+	 * <code>csq</code> is null, then then "null" will be substituted for
+	 * <code>csq</code>.
+	 * 
+	 * @override Writer.append
+	 * @param csq
+	 *            The CharSequence appended to the CharArrayWriter.
+	 * @return The CharArrayWriter
+	 */
+	public CharArrayWriter append(CharSequence csq) {
+	    if (null == csq) {
+	        append(TOKEN_NULL, 0, TOKEN_NULL.length());
+	    } else {
+	        append(csq, 0, csq.length());
+	    }
+	    return this;
+	}
+
+	/**
+	 * Append a subsequence of a CharSequence <code>csq</code> to the
+	 * CharArrayWriter. The first char and the last char of the subsequnce is
+	 * specified by the parameter <code>start</code> and <code>end</code>.
+	 * The CharArrayWriter.append(<code>csq</code>) works the same way as
+	 * CharArrayWriter.write(<code>csq</code>.subSequence(<code>start</code>,<code>end</code>).toString).
+	 * If <code>csq</code> is null, then "null" will be substituted for
+	 * <code>csq</code>.
+	 * 
+	 * @override Writer.append
+	 * @param csq
+	 *            The CharSequence appended to the CharArrayWriter.
+	 * @param start
+	 *            The index of the first char in the CharSequence appended to
+	 *            the CharArrayWriter.
+	 * @param end
+	 *            The index of the char after the last one in the CharSequence
+	 *            appended to the CharArrayWriter.
+	 * @return The CharArrayWriter.
+	 * @throws IndexOutOfBoundsException
+	 *             If start is less than end, end is greater than the length of
+	 *             the CharSequence, or start or end is negative.
+	 */
+	public CharArrayWriter append(CharSequence csq, int start, int end) {
+	    if (null == csq) {
+	        csq = TOKEN_NULL;
+	    }
+	    String output = csq.subSequence(start, end).toString();
+	    write(output, 0, output.length());
+	    return this;
 	}
 }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -30,7 +30,8 @@
  * a problem has been encountered in this Stream.
  * 
  */
-public class PrintStream extends FilterOutputStream {
+public class PrintStream extends FilterOutputStream implements Appendable,
+		Closeable {
 
 	/**
 	 * protect writes to the underlying stream.
@@ -53,6 +54,10 @@
 	private final String lineSeparator = (String) AccessController
 			.doPrivileged(new PriviAction("line.separator")); //$NON-NLS-1$
 
+	static final String TOKEN_NULL = "null"; //$NON-NLS-1$
+
+	// private Formatter formatter;
+
 	/**
 	 * Constructs a new PrintStream on the OutputStream <code>out</code>. All
 	 * writes to the target can now take place through this PrintStream. By
@@ -116,6 +121,95 @@
 	}
 
 	/**
+	 * Constructs a new PrintStream on the file <code>file</code>. All writes
+	 * to the target can now take place through this PrintStream. Its encoding
+	 * character set is the default charset in the VM.
+	 * 
+	 * @param file
+	 *            the file to provide convenience methods on.
+	 * @throws FileNotFoundException
+	 *             if the file does not exist or cannot be opened to write. Or the file cannot be created or any problem when open the file to write.
+	 * @throws SecurityException
+	 *             if the security manager exists and denies the write to the
+	 *             file.
+	 */
+	public PrintStream(File file) throws FileNotFoundException {
+		super(new FileOutputStream(file));
+	}
+
+	/**
+	 * Constructs a new PrintStream on the file <code>file</code>. All writes
+	 * to the target can now take place through this PrintStream. Its encoding
+	 * character set name is <code>csn</code>.
+	 * 
+	 * @param file
+	 *            the file to provide convenience methods on.
+	 * @param csn
+	 *            the character set name
+	 * @throws FileNotFoundException
+	 *             if the file does not exist or cannot be opened to write. Or
+	 *             the file cannot be created or any problem when open the file
+	 *             to write.
+	 * @throws SecurityException
+	 *             if the security manager exists and denies the write to the
+	 *             file.
+	 * @throws UnsupportedEncodingException
+	 *             if the chosen character set is not supported
+	 */
+	public PrintStream(File file, String csn) throws FileNotFoundException,
+			UnsupportedEncodingException {
+		super(new FileOutputStream(file));
+		if (csn == null)
+			throw new NullPointerException();
+		if (!Charset.isSupported(csn))
+			throw new UnsupportedEncodingException();
+		encoding = csn;
+	}
+
+	/**
+	 * Constructs a new PrintStream on the file the name of which is<code>fileName</code>.
+	 * All writes to the target can now take place through this PrintStream. Its
+	 * encoding character set is the default charset in the VM.
+	 * 
+	 * @param file
+	 *            the file to provide convenience methods on.
+	 * @throws FileNotFoundException
+	 *             if the file does not exist or cannot be opened to write. Or
+	 *             the file cannot be created or any problem when open the file
+	 *             to write.
+	 * @throws SecurityException
+	 *             if the security manager exists and denies the write to the
+	 *             file.
+	 */
+	public PrintStream(String fileName) throws FileNotFoundException {
+		this(new File(fileName));
+	}
+
+	/**
+	 * Constructs a new PrintStream on the file the name of which is<code>fileName</code>.
+	 * All writes to the target can now take place through this PrintStream. Its
+	 * encoding character set name is <code>csn</code>.
+	 * 
+	 * @param file
+	 *            the file to provide convenience methods on.
+	 * @param csn
+	 *            the character set name
+	 * @throws FileNotFoundException
+	 *             if the file does not exist or cannot be opened to write. Or
+	 *             the file cannot be created or any problem when open the file
+	 *             to write.
+	 * @throws SecurityException
+	 *             if the security manager exists and denies the write to the
+	 *             file.
+	 * @throws UnsupportedEncodingException
+	 *             if the chosen character set is not supported
+	 */
+	public PrintStream(String fileName, String csn)
+			throws FileNotFoundException, UnsupportedEncodingException {
+		this(new File(fileName), csn);
+	}
+
+	/**
 	 * Answers a boolean indicating whether or not this PrintStream has
 	 * encountered an error. If so, the receiver should probably be closed since
 	 * futher writes will not actually take place. A side effect of calling
@@ -482,5 +576,70 @@
 				setError();
 			}
 		}
+	}
+
+	/**
+	 * Append a char <code>c</code> to the PrintStream. The
+	 * PrintStream.append(<code>c</code>) works the same way as
+	 * PrintStream.print(<code>c</code>).
+	 * 
+	 * @param c
+	 *            The character appended to the PrintStream.
+	 * @return The PrintStream.
+	 */
+	public PrintStream append(char c) {
+		print(c);
+		return this;
+	}
+
+	/**
+	 * Append a CharSequence <code>csq</code> to the PrintStream. The
+	 * PrintStream.append(<code>csq</code>) works the same way as
+	 * PrintStream.print(<code>csq</code>.toString()). If <code>csq</code>
+	 * is null, then a CharSequence just contains then "null" will be
+	 * substituted for <code>csq</code>.
+	 * 
+	 * @param csq
+	 *            The CharSequence appended to the PrintStream.
+	 * @return The PrintStream.
+	 */
+	public PrintStream append(CharSequence csq) {
+		if (null == csq) {
+			print(TOKEN_NULL);
+		} else {
+			print(csq.toString());
+		}
+		return this;
+	}
+
+	/**
+	 * Append a subsequence of a CharSequence <code>csq</code> to the
+	 * PrintStream. The first char and the last char of the subsequnce is
+	 * specified by the parameter <code>start</code> and <code>end</code>.
+	 * The PrintStream.append(<code>csq</code>) works the same way as
+	 * PrintStream.print (<code>csq</code>csq.subSequence(<code>start</code>,<code>end</code>).toString).If
+	 * <code>csq</code> is null, then "null" will be substituted for
+	 * <code>csq</code>.
+	 * 
+	 * @param csq
+	 *            The CharSequence appended to the PrintStream.
+	 * @param start
+	 *            The index of the first char in the CharSequence appended to
+	 *            the PrintStream.
+	 * @param end
+	 *            The index of the char after the last one in the CharSequence
+	 *            appended to the PrintStream.
+	 * @return The PrintStream.
+	 * @throws IndexOutOfBoundsException
+	 *             If start is less than end, end is greater than the length of
+	 *             the CharSequence, or start or end is negative.
+	 */
+	public PrintStream append(CharSequence csq, int start, int end) {
+		if (null == csq) {
+			print(TOKEN_NULL.substring(start, end));
+		} else {
+			print(csq.subSequence(start, end).toString());
+		}
+		return this;
 	}
 }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -473,5 +473,72 @@
 	 */
 	public void write(String str, int offset, int count) {
 		write(str.substring(offset, offset + count).toCharArray());
+	}
+
+	/**
+	 * Append a char <code>c</code>to the PrintWriter. The
+	 * PrintWriter.append(<code>c</code>) works the same way as
+	 * PrintWriter.write(<code>c</code>).
+	 * 
+	 * @override Writer.append
+	 * @param c
+	 *            The character appended to the PrintWriter.
+	 * @return The PrintWriter.
+	 */
+	public PrintWriter append(char c) {
+		write(c);
+		return this;
+	}
+
+	/**
+	 * Append a CharSequence <code>csq</code> to the PrintWriter. The
+	 * PrintWriter.append(<code>csq</code>) works the same way as
+	 * PrintWriter.write(<code>csq</code>.toString()). If <code>csq</code>
+	 * is null, then "null" will be subsituted for <code>csq</code>
+	 * 
+	 * @override Writer.append
+	 * @param csq
+	 *            The CharSequence appended to the PrintWriter.
+	 * @return The PrintWriter
+	 */
+	public PrintWriter append(CharSequence csq) {
+		if (null == csq) {
+			append(TOKEN_NULL, 0, TOKEN_NULL.length());
+		} else {
+			append(csq, 0, csq.length());
+		}
+		return this;
+	}
+
+	/**
+	 * Append a subsequence of a CharSequence <code>csq</code> to the
+	 * PrintWriter. The first char and the last char of the subsequnce is
+	 * specified by the parameter <code>start</code> and <code>end</code>.
+	 * The PrintWriter.append(<code>csq</code>) works the same way as
+	 * PrintWriter.write(<code>csq</code>.subSequence(<code>start</code>,<code>end</code>).toString).If
+	 * <code>csq</code> is null, then "null" will be substituted for
+	 * <code>csq</code>.
+	 * 
+	 * @override Writer.append
+	 * @param csq
+	 *            The CharSequence appended to the PrintWriter.
+	 * @param start
+	 *            The index of the first char in the CharSequence appended to
+	 *            the PrintWriter.
+	 * @param end
+	 *            The index of the char after the last one in the CharSequence
+	 *            appended to the PrintWriter.
+	 * @return The PrintWriter.
+	 * @throws IndexOutOfBoundsException
+	 *             If start is less than end, end is greater than the length of
+	 *             the CharSequence, or start or end is negative.
+	 */
+	public PrintWriter append(CharSequence csq, int start, int end) {
+		if (null == csq) {
+			csq = TOKEN_NULL;
+		}
+		String output = csq.subSequence(start, end).toString();
+		write(output, 0, output.length());
+		return this;
 	}
 }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/StringWriter.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/StringWriter.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/StringWriter.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/StringWriter.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -173,5 +173,72 @@
 		synchronized (lock) {
 			buf.append(sub);
 		}
+	}
+	
+	/**
+	 * Append a char <code>c</code>to the StringWriter. The
+	 * StringWriter.append(<code>c</code>) works the same way as
+	 * StringWriter.write(<code>c</code>).
+	 * 
+	 * @override Writer.append
+	 * @param c
+	 *            The character appended to the StringWriter.
+	 * @return The StringWriter.
+	 */
+	public StringWriter append(char c) {
+		write(c);
+		return this;
+	}
+
+	/**
+	 * Append a CharSequence <code>csq</code> to the StringWriter. The
+	 * StringWriter.append(<code>csq</code>) works the same way as
+	 * StringWriter.write(<code>csq</code>.toString()). If <code>csq</code>
+	 * is null, then "null" will be substituted for <code>csq</code>.
+	 * 
+	 * @override Writer.append
+	 * @param csq
+	 *            The CharSequence appended to the StringWriter.
+	 * @return The StringWriter
+	 */
+	public StringWriter append(CharSequence csq) {
+		if (null == csq) {
+			append(TOKEN_NULL, 0, TOKEN_NULL.length());
+		} else {
+			append(csq, 0, csq.length());
+		}
+		return this;
+	}
+
+	/**
+	 * Append a subsequence of a CharSequence <code>csq</code> to the
+	 * StringWriter. The first char and the last char of the subsequnce is
+	 * specified by the parameter <code>start</code> and <code>end</code>.
+	 * The StringWriter.append(<code>csq</code>) works the same way as
+	 * StringWriter.write(<code>csq</code>.subSequence(<code>start</code>,<code>end</code>).toString).If
+	 * <code>csq</code> is null, then "null" will be substituted for
+	 * <code>csq</code>.
+	 * 
+	 * @override Writer.append
+	 * @param csq
+	 *            The CharSequence appended to the StringWriter.
+	 * @param start
+	 *            The index of the first char in the CharSequence appended to
+	 *            the StringWriter.
+	 * @param end
+	 *            The index of the char after the last one in the CharSequence
+	 *            appended to the StringWriter.
+	 * @return The StringWriter.
+	 * @throws IndexOutOfBoundsException
+	 *             If start is less than end, end is greater than the length of
+	 *             the CharSequence, or start or end is negative.
+	 */
+	public StringWriter append(CharSequence csq, int start, int end) {
+		if (null == csq) {
+			csq = TOKEN_NULL;
+		}
+		String output = csq.subSequence(start, end).toString();
+		write(output, 0, output.length());
+		return this;
 	}
 }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Writer.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Writer.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Writer.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Writer.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,7 +23,10 @@
  * 
  * @see Reader
  */
-public abstract class Writer {
+public abstract class Writer implements Appendable, Closeable, Flushable {
+    
+    static final String TOKEN_NULL = "null";
+    
 	/** The object used to synchronize access to the writer. */
 	protected Object lock;
 
@@ -164,4 +167,74 @@
 		} else
 			throw new StringIndexOutOfBoundsException();
 	}
+
+	/**
+	 * Append a char <code>c</code>to the Writer. The Writer.append(<code>c</code>)
+	 * works the same as Writer.write(<code>c</code>).
+	 * 
+	 * @param c
+	 *            The character appended to the Writer.
+	 * @return The Writer.
+	 * @throws IOException
+	 *             If any IOException raises during the procedure.
+	 */
+	public Writer append(char c) throws IOException {
+		write(c);
+		return this;
+	}
+
+	/**
+	 * Append a CharSequence <code>csq</code> to the Writer. The
+	 * Writer.append(<code>csq</code>) works the same way as Writer.write(<code>csq</code>.toString()).
+	 * If <code>csq</code> is null, then "null" will be substituted for
+	 * <code>csq</code>.
+	 * 
+	 * @param csq
+	 *            The CharSequence appended to the Writer.
+	 * @return The Writer.
+	 * @throws IOException
+	 *             If any IOException raises during the procedure.
+	 */
+	public Writer append(CharSequence csq) throws IOException {
+		if (null == csq) {
+			write(TOKEN_NULL);
+		} else {
+			write(csq.toString());
+		}
+		return this;
+	}
+
+	/**
+	 * Append a subsequence of a CharSequence <code>csq</code> to the Writer.
+	 * The first char and the last char of the subsequnce is specified by the
+	 * parameter <code>start</code> and <code>end</code>. The
+	 * Writer.append(<code>csq</code>) works the same way as Writer.write (<code>csq</code>csq.subSequence(<code>start</code>,<code>end</code>).toString).
+	 * If <code>csq</code> is null, then "null" will be substituted for
+	 * <code>csq</code>.
+	 * 
+	 * @param csq
+	 *            The CharSequence appended to the Writaer.
+	 * @param start
+	 *            The index of the first char in the CharSequence appended to
+	 *            the Writer.
+	 * @param end
+	 *            The index of the char after the last one in the CharSequence
+	 *            appended to the Writer.
+	 * @return The Writer.
+	 * @throws IndexOutOfBoundsException
+	 *             If start is less than end, end is greater than the length of
+	 *             the CharSequence, or start or end is negative.
+	 * @throws IOException
+	 *             If any IOException raises during the procedure.
+	 */
+	public Writer append(CharSequence csq, int start, int end)
+			throws IOException {
+		if (null == csq) {
+			write(TOKEN_NULL.substring(start, end));
+		} else {
+			write(csq.subSequence(start, end).toString());
+		}
+		return this;
+	}
+
 }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/AllTests.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/AllTests.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/AllTests.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/AllTests.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -84,6 +84,7 @@
 		suite.addTestSuite(UTFDataFormatExceptionTest.class);
 		suite.addTestSuite(WriteAbortedExceptionTest.class);
 		suite.addTestSuite(SerializationStressTest.class);
+		suite.addTestSuite(WriterTest.class);
 		// $JUnit-END$
 
 		return suite;

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/CharArrayWriterTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/CharArrayWriterTest.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/CharArrayWriterTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/CharArrayWriterTest.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,118 +22,118 @@
 
 public class CharArrayWriterTest extends junit.framework.TestCase {
 
-	char[] hw = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' };
+    char[] hw = { 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' };
 
-	CharArrayWriter cw;
+    CharArrayWriter cw;
 
-	CharArrayReader cr;
+    CharArrayReader cr;
 
-	/**
-	 * @tests java.io.CharArrayWriter#CharArrayWriter()
-	 */
-	public void test_Constructor() {
-		// Test for method java.io.CharArrayWriter()
-		cw = new CharArrayWriter(90);
-		assertTrue("Created incorrect writer", cw.size() == 0);
-	}
-
-	/**
-	 * @tests java.io.CharArrayWriter#CharArrayWriter(int)
-	 */
-	public void test_ConstructorI() {
-		// Test for method java.io.CharArrayWriter(int)
-		cw = new CharArrayWriter();
-		assertTrue("Created incorrect writer", cw.size() == 0);
-	}
-
-	/**
-	 * @tests java.io.CharArrayWriter#close()
-	 */
-	public void test_close() {
-		// Test for method void java.io.CharArrayWriter.close()
-		cw.close();
-	}
-
-	/**
-	 * @tests java.io.CharArrayWriter#flush()
-	 */
-	public void test_flush() {
-		// Test for method void java.io.CharArrayWriter.flush()
-		cw.flush();
-	}
-
-	/**
-	 * @tests java.io.CharArrayWriter#reset()
-	 */
-	public void test_reset() {
-		// Test for method void java.io.CharArrayWriter.reset()
-		cw.write("HelloWorld", 5, 5);
-		cw.reset();
-		cw.write("HelloWorld", 0, 5);
-		cr = new CharArrayReader(cw.toCharArray());
-		try {
-			char[] c = new char[100];
-			cr.read(c, 0, 5);
-			assertTrue("Reset failed to reset buffer", "Hello"
-					.equals(new String(c, 0, 5)));
-		} catch (IOException e) {
-			fail("Exception during reset test : " + e.getMessage());
-		}
-	}
-
-	/**
-	 * @tests java.io.CharArrayWriter#size()
-	 */
-	public void test_size() {
-		// Test for method int java.io.CharArrayWriter.size()
-		assertTrue("Returned incorrect size", cw.size() == 0);
-		cw.write(hw, 5, 5);
-		assertTrue("Returned incorrect size", cw.size() == 5);
-	}
-
-	/**
-	 * @tests java.io.CharArrayWriter#toCharArray()
-	 */
-	public void test_toCharArray() {
-		// Test for method char [] java.io.CharArrayWriter.toCharArray()
-		cw.write("HelloWorld", 0, 10);
-		cr = new CharArrayReader(cw.toCharArray());
-		try {
-			char[] c = new char[100];
-			cr.read(c, 0, 10);
-			assertTrue("toCharArray failed to return correct array",
-					"HelloWorld".equals(new String(c, 0, 10)));
-		} catch (IOException e) {
-			fail("Exception during toCharArray test : " + e.getMessage());
-		}
-	}
-
-	/**
-	 * @tests java.io.CharArrayWriter#toString()
-	 */
-	public void test_toString() {
-		// Test for method java.lang.String java.io.CharArrayWriter.toString()
-		cw.write("HelloWorld", 5, 5);
-		cr = new CharArrayReader(cw.toCharArray());
-		assertTrue("Returned incorrect string", "World".equals(cw.toString()));
-	}
-
-	/**
-	 * @tests java.io.CharArrayWriter#write(char[], int, int)
-	 */
-	public void test_write$CII() {
-		// Test for method void java.io.CharArrayWriter.write(char [], int, int)
-		cw.write(hw, 5, 5);
-		cr = new CharArrayReader(cw.toCharArray());
-		try {
-			char[] c = new char[100];
-			cr.read(c, 0, 5);
-			assertTrue("Writer failed to write correct chars", "World"
-					.equals(new String(c, 0, 5)));
-		} catch (IOException e) {
-			fail("Exception during write test : " + e.getMessage());
-		}
-	}
+    /**
+     * @tests java.io.CharArrayWriter#CharArrayWriter()
+     */
+    public void test_Constructor() {
+        // Test for method java.io.CharArrayWriter()
+        cw = new CharArrayWriter(90);
+        assertTrue("Created incorrect writer", cw.size() == 0);
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#CharArrayWriter(int)
+     */
+    public void test_ConstructorI() {
+        // Test for method java.io.CharArrayWriter(int)
+        cw = new CharArrayWriter();
+        assertTrue("Created incorrect writer", cw.size() == 0);
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#close()
+     */
+    public void test_close() {
+        // Test for method void java.io.CharArrayWriter.close()
+        cw.close();
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#flush()
+     */
+    public void test_flush() {
+        // Test for method void java.io.CharArrayWriter.flush()
+        cw.flush();
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#reset()
+     */
+    public void test_reset() {
+        // Test for method void java.io.CharArrayWriter.reset()
+        cw.write("HelloWorld", 5, 5);
+        cw.reset();
+        cw.write("HelloWorld", 0, 5);
+        cr = new CharArrayReader(cw.toCharArray());
+        try {
+            char[] c = new char[100];
+            cr.read(c, 0, 5);
+            assertTrue("Reset failed to reset buffer", "Hello"
+                    .equals(new String(c, 0, 5)));
+        } catch (IOException e) {
+            fail("Exception during reset test : " + e.getMessage());
+        }
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#size()
+     */
+    public void test_size() {
+        // Test for method int java.io.CharArrayWriter.size()
+        assertTrue("Returned incorrect size", cw.size() == 0);
+        cw.write(hw, 5, 5);
+        assertTrue("Returned incorrect size", cw.size() == 5);
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#toCharArray()
+     */
+    public void test_toCharArray() {
+        // Test for method char [] java.io.CharArrayWriter.toCharArray()
+        cw.write("HelloWorld", 0, 10);
+        cr = new CharArrayReader(cw.toCharArray());
+        try {
+            char[] c = new char[100];
+            cr.read(c, 0, 10);
+            assertTrue("toCharArray failed to return correct array",
+                    "HelloWorld".equals(new String(c, 0, 10)));
+        } catch (IOException e) {
+            fail("Exception during toCharArray test : " + e.getMessage());
+        }
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#toString()
+     */
+    public void test_toString() {
+        // Test for method java.lang.String java.io.CharArrayWriter.toString()
+        cw.write("HelloWorld", 5, 5);
+        cr = new CharArrayReader(cw.toCharArray());
+        assertTrue("Returned incorrect string", "World".equals(cw.toString()));
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#write(char[], int, int)
+     */
+    public void test_write$CII() {
+        // Test for method void java.io.CharArrayWriter.write(char [], int, int)
+        cw.write(hw, 5, 5);
+        cr = new CharArrayReader(cw.toCharArray());
+        try {
+            char[] c = new char[100];
+            cr.read(c, 0, 5);
+            assertTrue("Writer failed to write correct chars", "World"
+                    .equals(new String(c, 0, 5)));
+        } catch (IOException e) {
+            fail("Exception during write test : " + e.getMessage());
+        }
+    }
 
     /**
      * @tests java.io.CharArrayWriter#write(char[], int, int)
@@ -151,37 +151,37 @@
         }
     }
 
-	/**
-	 * @tests java.io.CharArrayWriter#write(int)
-	 */
-	public void test_writeI() {
-		// Test for method void java.io.CharArrayWriter.write(int)
-		cw.write('T');
-		cr = new CharArrayReader(cw.toCharArray());
-		try {
-			assertTrue("Writer failed to write char", cr.read() == 'T');
-		} catch (IOException e) {
-			fail("Exception during write test : " + e.getMessage());
-		}
-	}
-
-	/**
-	 * @tests java.io.CharArrayWriter#write(java.lang.String, int, int)
-	 */
-	public void test_writeLjava_lang_StringII() {
-		// Test for method void java.io.CharArrayWriter.write(java.lang.String,
-		// int, int)
-		cw.write("HelloWorld", 5, 5);
-		cr = new CharArrayReader(cw.toCharArray());
-		try {
-			char[] c = new char[100];
-			cr.read(c, 0, 5);
-			assertTrue("Writer failed to write correct chars", "World"
-					.equals(new String(c, 0, 5)));
-		} catch (IOException e) {
-			fail("Exception during write test : " + e.getMessage());
-		}
-	}
+    /**
+     * @tests java.io.CharArrayWriter#write(int)
+     */
+    public void test_writeI() {
+        // Test for method void java.io.CharArrayWriter.write(int)
+        cw.write('T');
+        cr = new CharArrayReader(cw.toCharArray());
+        try {
+            assertTrue("Writer failed to write char", cr.read() == 'T');
+        } catch (IOException e) {
+            fail("Exception during write test : " + e.getMessage());
+        }
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#write(java.lang.String, int, int)
+     */
+    public void test_writeLjava_lang_StringII() {
+        // Test for method void java.io.CharArrayWriter.write(java.lang.String,
+        // int, int)
+        cw.write("HelloWorld", 5, 5);
+        cr = new CharArrayReader(cw.toCharArray());
+        try {
+            char[] c = new char[100];
+            cr.read(c, 0, 5);
+            assertTrue("Writer failed to write correct chars", "World"
+                    .equals(new String(c, 0, 5)));
+        } catch (IOException e) {
+            fail("Exception during write test : " + e.getMessage());
+        }
+    }
 
     /**
      * @tests java.io.CharArrayWriter#write(java.lang.String, int, int)
@@ -196,37 +196,76 @@
         }
     }
 
-	/**
-	 * @tests java.io.CharArrayWriter#writeTo(java.io.Writer)
-	 */
-	public void test_writeToLjava_io_Writer() {
-		// Test for method void java.io.CharArrayWriter.writeTo(java.io.Writer)
-		cw.write("HelloWorld", 0, 10);
-		StringWriter sw = new StringWriter();
-		try {
-			cw.writeTo(sw);
-			assertTrue("Writer failed to write correct chars", "HelloWorld"
-					.equals(sw.toString()));
-		} catch (IOException e) {
-			fail("Exception during writeTo test : " + e.getMessage());
-		}
-	}
-
-	/**
-	 * Sets up the fixture, for example, open a network connection. This method
-	 * is called before a test is executed.
-	 */
-	protected void setUp() {
-		cw = new CharArrayWriter();
-	}
-
-	/**
-	 * Tears down the fixture, for example, close a network connection. This
-	 * method is called after a test is executed.
-	 */
-	protected void tearDown() {
-		if (cr != null)
-			cr.close();
-		cw.close();
-	}
+    /**
+     * @tests java.io.CharArrayWriter#writeTo(java.io.Writer)
+     */
+    public void test_writeToLjava_io_Writer() {
+        // Test for method void java.io.CharArrayWriter.writeTo(java.io.Writer)
+        cw.write("HelloWorld", 0, 10);
+        StringWriter sw = new StringWriter();
+        try {
+            cw.writeTo(sw);
+            assertTrue("Writer failed to write correct chars", "HelloWorld"
+                    .equals(sw.toString()));
+        } catch (IOException e) {
+            fail("Exception during writeTo test : " + e.getMessage());
+        }
+    }
+
+    /**
+     * Sets up the fixture, for example, open a network connection. This method
+     * is called before a test is executed.
+     */
+    protected void setUp() {
+        cw = new CharArrayWriter();
+    }
+
+    /**
+     * Tears down the fixture, for example, close a network connection. This
+     * method is called after a test is executed.
+     */
+    protected void tearDown() {
+        if (cr != null)
+            cr.close();
+        cw.close();
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#append(char)
+     */
+    public void test_appendChar() throws IOException {
+        char testChar = ' ';
+        CharArrayWriter writer = new CharArrayWriter(10);
+        writer.append(testChar);
+        writer.flush();
+        assertEquals(String.valueOf(testChar), writer.toString());
+        writer.close();
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#append(CharSequence)
+     */
+    public void test_appendCharSequence() {
+
+        String testString = "My Test String";
+        CharArrayWriter writer = new CharArrayWriter(10);
+        writer.append(testString);
+        writer.flush();
+        assertEquals(testString, writer.toString());
+        writer.close();
+    }
+
+    /**
+     * @tests java.io.CharArrayWriter#append(CharSequence, int, int)
+     */
+    public void test_appendCharSequenceIntInt() {
+        String testString = "My Test String";
+        CharArrayWriter writer = new CharArrayWriter(10);
+        writer.append(testString, 1, 3);
+        writer.flush();
+        assertEquals(testString.substring(1, 3), writer.toString());
+        writer.close();
+
+    }
+
 }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintStreamTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintStreamTest.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintStreamTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintStreamTest.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,8 +15,10 @@
 
 package tests.api.java.io;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.PrintStream;
 
 public class PrintStreamTest extends junit.framework.TestCase {
 
@@ -500,6 +502,47 @@
 		os.write('t');
 		bis = new java.io.ByteArrayInputStream(bos.toByteArray());
 		assertTrue("Incorrect char written", bis.read() == 't');
+	}
+	
+	
+	/**
+	 * @tests java.io.PrintStream#append(char)
+	 */
+	public void test_appendChar() throws IOException{
+	char testChar = ' ';
+	ByteArrayOutputStream out = new ByteArrayOutputStream();
+	PrintStream printStream = new PrintStream(out);
+	printStream.append(testChar);
+	printStream.flush();
+	assertEquals(String.valueOf(testChar),out.toString());
+	printStream.close();
+	}
+	/**
+	 * @tests java.io.PrintStream#append(CharSequence)
+	 */
+	public void test_appendCharSequence() {
+		
+		String testString = "My Test String";
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		PrintStream printStream = new PrintStream(out);
+		printStream.append(testString);
+		printStream.flush();
+		assertEquals(testString, out.toString());
+		printStream.close();
+	}
+
+	/**
+	 *  @tests java.io.PrintStream#append(CharSequence, int, int)
+	 */
+	public void test_appendCharSequenceIntInt() {
+		String testString = "My Test String";
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		PrintStream printStream = new PrintStream(out);
+		printStream.append(testString, 1, 3);
+		printStream.flush();
+		assertEquals(testString.substring(1, 3), out.toString());
+		printStream.close();
+
 	}
 
 	/**

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintWriterTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintWriterTest.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintWriterTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/PrintWriterTest.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -582,6 +582,47 @@
 			fail("IOException during test : " + e.getMessage());
 		}
 		assertTrue("Wrote incorrect char[] string: " + s, s.equals("World"));
+	}
+	
+	/**
+	 * @tests java.io.PrintWriter#append(char)
+	 */
+	public void test_appendChar() {
+	char testChar = ' ';
+	ByteArrayOutputStream out = new ByteArrayOutputStream();
+	PrintWriter printWriter = new PrintWriter(out);
+	printWriter.append(testChar);
+	printWriter.flush();
+	assertEquals(String.valueOf(testChar),out.toString());
+	printWriter.close();
+	}
+	/**
+	 * @tests java.io.PrintWriter#append(CharSequence)
+	 */
+	public void test_appendCharSequence() {
+		
+		String testString = "My Test String";
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		PrintWriter printWriter = new PrintWriter(out);
+		printWriter.append(testString);
+		printWriter.flush();
+		assertEquals(testString, out.toString());
+		printWriter.close();	
+
+	}
+
+	/**
+	 *  @tests java.io.PrintWriter#append(CharSequence, int, int)
+	 */
+	public void test_appendCharSequenceIntInt() {
+		String testString = "My Test String";
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		PrintWriter printWriter = new PrintWriter(out);
+		printWriter.append(testString, 1, 3);
+		printWriter.flush();
+		assertEquals(testString.substring(1, 3), out.toString());
+		printWriter.close();
+
 	}
 
 	/**

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/StringWriterTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/StringWriterTest.java?rev=396703&r1=396702&r2=396703&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/StringWriterTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/StringWriterTest.java Mon Apr 24 15:24:07 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 The Apache Software Foundation or its licensors, as applicable
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -162,11 +162,46 @@
 		sw.write("This is a test string", 2, 2);
 		assertTrue("String not written properly", sw.toString().equals("is"));
 	}
+    
+	/**
+	 * @tests java.io.StringWriter#append(char)
+	 */
+	public void test_appendChar() throws IOException {
+	    char testChar = ' ';
+	    StringWriter stringWriter = new StringWriter(20);
+	    stringWriter.append(testChar);
+	    assertEquals(String.valueOf(testChar), stringWriter.toString());
+	    stringWriter.close();
+	}
+
+	/**
+	 * @tests java.io.PrintWriter#append(CharSequence)
+	 */
+	public void test_appendCharSequence() throws IOException {
+
+	    String testString = "My Test String";
+	    StringWriter stringWriter = new StringWriter(20);
+	    stringWriter.append(testString);
+	    assertEquals(String.valueOf(testString), stringWriter.toString());
+	    stringWriter.close();
+	}
 
 	/**
-	 * Sets up the fixture, for example, open a network connection. This method
-	 * is called before a test is executed.
+	 * @tests java.io.PrintWriter#append(CharSequence, int, int)
 	 */
+	public void test_appendCharSequenceIntInt() throws IOException {
+	    String testString = "My Test String";
+	    StringWriter stringWriter = new StringWriter(20);
+	    stringWriter.append(testString, 1, 3);
+	    assertEquals(testString.substring(1, 3), stringWriter.toString());
+	    stringWriter.close();
+
+	}
+    
+	/**
+     * Sets up the fixture, for example, open a network connection. This method
+     * is called before a test is executed.
+     */
 	protected void setUp() {
 
 		sw = new StringWriter();

Added: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/WriterTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/WriterTest.java?rev=396703&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/WriterTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/WriterTest.java Mon Apr 24 15:24:07 2006
@@ -0,0 +1,109 @@
+/* Copyright 2006 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * 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 tests.api.java.io;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import junit.framework.TestCase;
+
+public class WriterTest extends TestCase {
+
+    /**
+     * @tests java.io.Writer#append(char)
+     */
+    public void test_appendChar() throws IOException {
+        char testChar = ' ';
+        MockWriter writer = new MockWriter(20);
+        writer.append(testChar);
+        assertEquals(String.valueOf(testChar), String.valueOf(writer
+                .getContents()));
+        writer.close();
+    }
+
+    /**
+     * @tests java.io.Writer#append(CharSequence)
+     */
+    public void test_appendCharSequence() throws IOException {
+        String testString = "My Test String";
+        MockWriter writer = new MockWriter(20);
+        writer.append(testString);
+        assertEquals(testString, String.valueOf(writer.getContents()));
+        writer.close();
+
+    }
+
+    /**
+     * @tests java.io.Writer#append(CharSequence, int, int)
+     */
+    public void test_appendCharSequenceIntInt() throws IOException {
+        String testString = "My Test String";
+        MockWriter writer = new MockWriter(20);
+        writer.append(testString, 1, 3);
+        assertEquals(testString.substring(1, 3), String.valueOf(writer
+                .getContents()));
+        writer.close();
+
+    }
+
+    class MockWriter extends Writer {
+        private char[] contents;
+
+        private int length;
+
+        private int offset;
+
+        MockWriter(int capacity) {
+            contents = new char[capacity];
+            length = capacity;
+            offset = 0;
+        }
+
+        public synchronized void close() throws IOException {
+            flush();
+            contents = null;
+        }
+
+        public synchronized void flush() throws IOException {
+            // do nothing
+        }
+
+        public void write(char[] buffer, int offset, int count)
+                throws IOException {
+            if (null == contents) {
+                throw new IOException();
+            }
+            if (offset < 0 || count < 0 || offset >= buffer.length) {
+                throw new IndexOutOfBoundsException();
+            }
+            count = Math.min(count, buffer.length - offset);
+            count = Math.min(count, this.length - this.offset);
+            for (int i = 0; i < count; i++) {
+                contents[this.offset + i] = buffer[offset + i];
+            }
+            this.offset += count;
+
+        }
+
+        public char[] getContents() {
+            char[] result = new char[offset];
+            for (int i = 0; i < offset; i++) {
+                result[i] = contents[i];
+            }
+            return result;
+        }
+    }
+
+}

Propchange: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/WriterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native