浏览代码

parseBoolean utility

tags/PRE_ANDY
wisberg 19 年前
父节点
当前提交
be5b8333d3

+ 46
- 0
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");

+ 34
- 0
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");

+ 4
- 3
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 */

正在加载...
取消
保存