package schemacrawler.test.utility; import static org.junit.Assert.fail; import static schemacrawler.test.utility.TestUtility.compareOutput; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.io.Writer; import java.util.List; import java.util.Locale; public class TestWriter extends Writer { private final File tempFile; private final PrintWriter out; public TestWriter() throws IOException { tempFile = File.createTempFile("schemacrawler", ".dat"); tempFile.deleteOnExit(); out = new PrintWriter(tempFile, "UTF-8"); } @Override public PrintWriter append(final char c) { return out.append(c); } @Override public PrintWriter append(final CharSequence csq) { return out.append(csq); } @Override public PrintWriter append(final CharSequence csq, final int start, final int end) { return out.append(csq, start, end); } public void assertEquals(final String referenceFile) throws Exception { out.close(); final List<String> failures = compareOutput(referenceFile, tempFile); if (!failures.isEmpty()) { fail(failures.toString()); } } public boolean checkError() { return out.checkError(); } @Override public void close() { out.close(); } @Override public boolean equals(final Object obj) { return out.equals(obj); } @Override public void flush() { out.flush(); } public PrintWriter format(final Locale l, final String format, final Object... args) { return out.format(l, format, args); } public PrintWriter format(final String format, final Object... args) { return out.format(format, args); } @Override public int hashCode() { return out.hashCode(); } public void print(final boolean b) { out.print(b); } public void print(final char c) { out.print(c); } public void print(final char[] s) { out.print(s); } public void print(final double d) { out.print(d); } public void print(final float f) { out.print(f); } public void print(final int i) { out.print(i); } public void print(final long l) { out.print(l); } public void print(final Object obj) { out.print(obj); } public void print(final String s) { out.print(s); } public PrintWriter printf(final Locale l, final String format, final Object... args) { return out.printf(l, format, args); } public PrintWriter printf(final String format, final Object... args) { return out.printf(format, args); } public void println() { out.println(); } public void println(final boolean x) { out.println(x); } public void println(final char x) { out.println(x); } public void println(final char[] x) { out.println(x); } public void println(final double x) { out.println(x); } public void println(final float x) { out.println(x); } public void println(final int x) { out.println(x); } public void println(final long x) { out.println(x); } public void println(final Object x) { out.println(x); } public void println(final String x) { out.println(x); } @Override public String toString() { return out.toString(); } @Override public void write(final char[] buf) { out.write(buf); } @Override public void write(final char[] buf, final int off, final int len) { out.write(buf, off, len); } @Override public void write(final int c) { out.write(c); } @Override public void write(final String s) { out.write(s); } @Override public void write(final String s, final int off, final int len) { out.write(s, off, len); } }