/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package abs.backend.tests; /** * A printer for {@link StringBasedABSTestRunnerGenerator} * @author pwong * */ public class TestRunnerScriptBuilder implements Appendable, CharSequence { private final StringBuilder builder = new StringBuilder(); static final String INDENT = "\t"; static final String NEWLINE = System.getProperty("line.separator"); private StringBuilder indentation = new StringBuilder(); private boolean toindent = false; TestRunnerScriptBuilder increaseIndent() { indentation.append(INDENT); return this; } TestRunnerScriptBuilder newLine() { toindent = true; builder.append(NEWLINE); return this; } TestRunnerScriptBuilder decreaseIndent() { indentation.deleteCharAt(indentation.length()-1); return this; } private void indent() { if (toindent) { builder.append(indentation); toindent = false; } } public TestRunnerScriptBuilder append(Object obj) { indent(); builder.append(obj); return this; } @Override public TestRunnerScriptBuilder append(CharSequence csq) { indent(); builder.append(csq); return this; } @Override public TestRunnerScriptBuilder append(CharSequence csq, int start, int end) { indent(); builder.append(csq,start,end); return this; } @Override public TestRunnerScriptBuilder append(char c) { indent(); builder.append(c); return this; } @Override public int length() { return builder.length(); } @Override public char charAt(int index) { return builder.charAt(index); } @Override public CharSequence subSequence(int start, int end) { return builder.subSequence(start, end); } @Override public String toString() { return builder.toString(); } }