return path.toString();
}
+ /**
+ * @param s the String to parse for [on|off|true|false]
+ * @throws IllegalArgumentException if input is bad
+ **/
+ public static boolean parseBoolean(String input) {
+ return parseBoolean(input, true);
+ }
+
+ /**
+ * @param s the String to parse for [on|off|true|false]
+ * @param iaxOnError if true and input is bad, throw
+ * IllegalArgumentException
+ * @return true if input is true, false otherwise
+ * @throws IllegalArgumentException if iaxOnError and input is bad
+ */
+ public static boolean parseBoolean(final String input, boolean iaxOnError) {
+ final String syntax = ": [on|off|true|false]";
+ if (null == input) {
+ return false;
+ }
+ String lc = input.trim().toLowerCase();
+ boolean result = false;
+ boolean valid = false;
+ switch (lc.length()) {
+ case 2:
+ if (valid = "on".equals(lc)) {
+ result = true;
+ }
+ break;
+ case 3:
+ valid = "off".equals(lc);
+ break;
+ case 4:
+ if (valid = "true".equals(lc)) {
+ result = true;
+ }
+ break;
+ case 5:
+ valid = "false".equals(lc);
+ break;
+ }
+ if (iaxOnError && !valid) {
+ throw new IllegalArgumentException(input + syntax);
+ }
+ return result;
+ }
public static File aspectjrtJarFile() {
return (File) LIB_ENTRIES.get(ASPECTJRT_KEY + ".file");
assertTrue(!TestUtil.sameFiles(holder, expectedBaseDir, actualBaseDir, filename));
}
+ public void testParseBoolean() {
+ {
+ String[] trues = {"true", "TRUE", "on", "ON" };
+ for (int i = 0; i < trues.length; i++) {
+ assertTrue(trues[i], TestUtil.parseBoolean(trues[i]));
+ }
+ }
+ {
+ String[] falses = {"false", "FALSE", "off", "off" };
+ for (int i = 0; i < falses.length; i++) {
+ assertTrue(falses[i], !TestUtil.parseBoolean(falses[i]));
+ }
+ }
+ String[] errors = {"fals", "tru", "T", "on of" };
+ boolean fail = false;
+ final int MAX = errors.length-1;
+ for (int i = 0; i <= MAX; i++) {
+ try {
+ TestUtil.parseBoolean(errors[i], fail);
+ assertTrue("no exception: " + errors[i], !fail);
+ } catch (IllegalArgumentException e) {
+ assertTrue("exception: " + errors[i], fail);
+ String m = e.getMessage();
+ if (-1 == m.indexOf(errors[i])) {
+ fail(errors[i] + " not in " + m);
+ }
+ }
+ if ((i == MAX) && !fail) {
+ i = -1;
+ fail = true;
+ }
+ }
+
+ }
public void testFileCompareClass() throws IOException {
if (!TestUtil.ClassLineator.haveDisassembler()) {
System.err.println("skipping testFileCompareClass - no disassembler on classpath");
import org.aspectj.testing.run.IRunStatus;
import org.aspectj.testing.run.WrappedRunIterator;
import org.aspectj.testing.util.TestClassLoader;
+import org.aspectj.testing.util.TestUtil;
import org.aspectj.testing.xml.SoftMessage;
import org.aspectj.testing.xml.XMLWriter;
import org.aspectj.util.FileUtil;
}
public void setLTW(String ltw) {
- useLTW = Boolean.parseBoolean(ltw);
+ useLTW = TestUtil.parseBoolean(ltw);
}
public void setAspectpath(String path) {
this.classpath = XMLWriter.unflattenList(path);
}
public void setErrStreamIsError(String errStreamIsError) {
- this.errStreamIsError = Boolean.parseBoolean(errStreamIsError);
+ this.errStreamIsError = TestUtil.parseBoolean(errStreamIsError);
}
public void setOutStreamIsError(String outStreamIsError) {
- this.outStreamIsError = Boolean.parseBoolean(outStreamIsError);
+ this.outStreamIsError = TestUtil.parseBoolean(outStreamIsError);
}
/** @param skip if true, then do not set up Tester */