aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwisberg <wisberg>2005-05-17 00:03:14 +0000
committerwisberg <wisberg>2005-05-17 00:03:14 +0000
commitbe5b8333d32e6efc02a73f4a83fbf10f1c5a9018 (patch)
tree60511ca7cf5795eef0451a5bf012a89a50dcc0bd
parenta2a3654d02ff77485fb35613b25f0b138074c0ba (diff)
downloadaspectj-be5b8333d32e6efc02a73f4a83fbf10f1c5a9018.tar.gz
aspectj-be5b8333d32e6efc02a73f4a83fbf10f1c5a9018.zip
parseBoolean utility
-rw-r--r--testing-util/src/org/aspectj/testing/util/TestUtil.java46
-rw-r--r--testing-util/testsrc/org/aspectj/testingutil/TestUtilTest.java34
-rw-r--r--testing/src/org/aspectj/testing/harness/bridge/JavaRun.java7
3 files changed, 84 insertions, 3 deletions
diff --git a/testing-util/src/org/aspectj/testing/util/TestUtil.java b/testing-util/src/org/aspectj/testing/util/TestUtil.java
index 4b62f9a90..3095b6e2d 100644
--- a/testing-util/src/org/aspectj/testing/util/TestUtil.java
+++ b/testing-util/src/org/aspectj/testing/util/TestUtil.java
@@ -179,6 +179,52 @@ public final class TestUtil {
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");
diff --git a/testing-util/testsrc/org/aspectj/testingutil/TestUtilTest.java b/testing-util/testsrc/org/aspectj/testingutil/TestUtilTest.java
index 00fb0f385..3efe7757b 100644
--- a/testing-util/testsrc/org/aspectj/testingutil/TestUtilTest.java
+++ b/testing-util/testsrc/org/aspectj/testingutil/TestUtilTest.java
@@ -93,6 +93,40 @@ public class TestUtilTest extends TestCase {
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");
diff --git a/testing/src/org/aspectj/testing/harness/bridge/JavaRun.java b/testing/src/org/aspectj/testing/harness/bridge/JavaRun.java
index 7a16e25d5..223a0c8a6 100644
--- a/testing/src/org/aspectj/testing/harness/bridge/JavaRun.java
+++ b/testing/src/org/aspectj/testing/harness/bridge/JavaRun.java
@@ -20,6 +20,7 @@ import org.aspectj.testing.run.IRunIterator;
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;
@@ -669,7 +670,7 @@ public class JavaRun implements IAjcRun {
}
public void setLTW(String ltw) {
- useLTW = Boolean.parseBoolean(ltw);
+ useLTW = TestUtil.parseBoolean(ltw);
}
public void setAspectpath(String path) {
@@ -683,11 +684,11 @@ public class JavaRun implements IAjcRun {
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 */