diff options
author | Andy Clement <aclement@pivotal.io> | 2019-01-23 13:31:20 -0800 |
---|---|---|
committer | Andy Clement <aclement@pivotal.io> | 2019-01-23 13:31:20 -0800 |
commit | 27f3a1ceb20f5515962151e57dca7c3798e71f48 (patch) | |
tree | 5e097f77354e2e774ca9f327cd304f684b5f3604 /testing-util/src | |
parent | 68e9bc60f98ece8557eb6499326644a956d2dcf9 (diff) | |
download | aspectj-27f3a1ceb20f5515962151e57dca7c3798e71f48.tar.gz aspectj-27f3a1ceb20f5515962151e57dca7c3798e71f48.zip |
mavenized testing-util module - wip
Diffstat (limited to 'testing-util/src')
-rw-r--r-- | testing-util/src/main/java/org/aspectj/testing/util/TestUtil.java (renamed from testing-util/src/org/aspectj/testing/util/TestUtil.java) | 0 | ||||
-rw-r--r-- | testing-util/src/test/java/org/aspectj/testingutil/TestCompareClassFile.java | 147 | ||||
-rw-r--r-- | testing-util/src/test/java/org/aspectj/testingutil/TestUtilTest.java | 150 | ||||
-rw-r--r-- | testing-util/src/test/java/org/aspectj/testingutil/UtilTests.java | 32 |
4 files changed, 329 insertions, 0 deletions
diff --git a/testing-util/src/org/aspectj/testing/util/TestUtil.java b/testing-util/src/main/java/org/aspectj/testing/util/TestUtil.java index 1dbc0115c..1dbc0115c 100644 --- a/testing-util/src/org/aspectj/testing/util/TestUtil.java +++ b/testing-util/src/main/java/org/aspectj/testing/util/TestUtil.java diff --git a/testing-util/src/test/java/org/aspectj/testingutil/TestCompareClassFile.java b/testing-util/src/test/java/org/aspectj/testingutil/TestCompareClassFile.java new file mode 100644 index 000000000..e24ca7be8 --- /dev/null +++ b/testing-util/src/test/java/org/aspectj/testingutil/TestCompareClassFile.java @@ -0,0 +1,147 @@ +/* ******************************************************************* + * Copyright (c) 1999-2001 Xerox Corporation, + * 2002 Palo Alto Research Center, Incorporated (PARC). + * All rights reserved. + * This program and the accompanying materials are made available + * under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Xerox/PARC initial implementation + * ******************************************************************/ + +package org.aspectj.testingutil; + +import org.aspectj.util.LangUtil; + +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.SortedSet; +import java.util.StringTokenizer; +import java.util.TreeSet; + +/** + * This is source for a sample .class file. + * It is compiled and the corresponding .class files are + * checked in under the testdata directory. + * It has no other purpose. + */ +public class TestCompareClassFile implements Runnable { + public static final String STATIC_CONST = "STATIC_CONST"; + public static void main(String[] args) { + // tc static references + long l = Math.abs(System.currentTimeMillis()); + String s = STATIC_CONST + " is constant"; + } + public static void runStatic() { + } + private static void privateRunStatic() { + } + static void defaultRunStatic() { + } + protected static void protectedRunStatic() { + } + + private long privateLong; + private final Object privateFinalObject; + + private TestCompareClassFile() { + super(); + privateLong = System.currentTimeMillis(); + // method-local inner class + privateFinalObject = new Runnable() { public void run(){}}; + } + + /** implement Runnable */ + public void run() { + } + private void privateRun() { + } + void defaultRun() { + } + protected void protectedRun() { + } + + // ------- misc stolen utility code + // Collections Util + public static List getListInMap(Map map, Object key) { + List list = (List)map.get(key); + if (list == null) { + list = new ArrayList(); + map.put(key, list); + } + return list; + } + + public static SortedSet getSortedSetInMap(Map map, Object key) { + SortedSet list = (SortedSet)map.get(key); + if (list == null) { + list = new TreeSet(); + map.put(key, list); + } + return list; + } + + // LangUtil + /** + * Make a copy of the array. + * @return an array with the same component type as source + * containing same elements, even if null. + * @throws IllegalArgumentException if source is null + */ + public static final Object[] copy(Object[] source) { + final Class c = source.getClass().getComponentType(); + Object[] result = (Object[]) Array.newInstance(c, source.length); + System.arraycopy(source, 0, result, 0, result.length); + return result; + } + /** + * Trim ending lines from a StringBuffer, + * clipping to maxLines and further removing any number of + * trailing lines accepted by checker. + * @param stack StringBuffer with lines to elide + * @param maxLines int for maximum number of resulting lines + */ + static void elideEndingLines(StringBuffer stack, int maxLines) { + if ((null == stack) || (0 == stack.length())) { + return; + } + final LinkedList lines = new LinkedList(); + StringTokenizer st = new StringTokenizer(stack.toString(),"\n\r"); + while (st.hasMoreTokens() && (0 < --maxLines)) { + lines.add(st.nextToken()); + } + st = null; + + String line; + int elided = 0; + while (!lines.isEmpty()) { + line = (String) lines.getLast(); + if (null == line) { + break; + } else { + elided++; + lines.removeLast(); + } + } + if ((elided > 0) || (maxLines < 1)) { + final int EOL_LEN = LangUtil.EOL.length(); + int totalLength = 0; + while (!lines.isEmpty()) { + totalLength += EOL_LEN + ((String) lines.getFirst()).length(); + lines.removeFirst(); + } + if (stack.length() > totalLength) { + stack.setLength(totalLength); + if (elided > 0) { + stack.append(" (... " + elided + " lines...)"); + } + } + } + } + +} diff --git a/testing-util/src/test/java/org/aspectj/testingutil/TestUtilTest.java b/testing-util/src/test/java/org/aspectj/testingutil/TestUtilTest.java new file mode 100644 index 000000000..e5592b352 --- /dev/null +++ b/testing-util/src/test/java/org/aspectj/testingutil/TestUtilTest.java @@ -0,0 +1,150 @@ +/* ******************************************************************* + * Copyright (c) 1999-2001 Xerox Corporation, + * 2002 Palo Alto Research Center, Incorporated (PARC). + * All rights reserved. + * This program and the accompanying materials are made available + * under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Xerox/PARC initial implementation + * ******************************************************************/ + +package org.aspectj.testingutil; + +import java.io.File; +import java.io.IOException; + +import junit.framework.TestCase; + +import org.aspectj.bridge.MessageHandler; +import org.aspectj.bridge.MessageUtil; +import org.aspectj.util.FileUtil; +import org.aspectj.testing.util.TestUtil; + +/** + * + */ +public class TestUtilTest extends TestCase { + + public TestUtilTest(String name) { + super(name); + } + + public void testFileCompareNonClass() throws IOException { + MessageHandler holder = new MessageHandler(); + File thisFile = new File(UtilTests.TESTING_UTIL_PATH + "/testsrc/org/aspectj/testingutil/TestUtilTest.java"); + //File thisFile = new File("src/testing-util.lst"); + assertTrue(TestUtil.sameFiles(holder, thisFile, thisFile)); + + File tempFile = File.createTempFile("TestUtilTest", ".tmp"); + FileUtil.copyFile(thisFile, tempFile); + long len = tempFile.length(); + assertTrue(0 != len); + long tlen = thisFile.length(); + assertEquals(tlen, len); + assertTrue(TestUtil.sameFiles(holder, tempFile, thisFile)); + try { + String path = thisFile.getName(); + File basedir = tempFile.getParentFile(); + File renamed = new File(basedir, path); + if (!tempFile.renameTo(renamed)) { + MessageUtil.warn(holder, "unable to rename " + tempFile + " to " + renamed); + } else { + len = renamed.length(); + assertEquals(tlen, len); + assertTrue(TestUtil.sameFiles(holder, basedir, thisFile.getParentFile(), path)); + } + } finally { + if (0 < holder.numMessages(null, true)) { + MessageUtil.print(System.out, holder); + holder.clearMessages(); + } + tempFile.delete(); + } + } + + public void testFileCompareNonClassStaticPositive() throws IOException { + MessageHandler holder = new MessageHandler(); + File basedir = new File(UtilTests.TESTING_UTIL_PATH + "/testdata/testCompareTextFiles/sameFile"); + File expectedBaseDir = new File(basedir, "expected"); + File actualBaseDir = new File(basedir, "actual"); + String filename = "TestUtilTest.java"; + File expected = new File(expectedBaseDir, filename); + File actual = new File(actualBaseDir, filename); + + assertTrue(TestUtil.sameFiles(holder, expected, actual)); + + assertTrue(TestUtil.sameFiles(holder, expectedBaseDir, actualBaseDir, filename)); + } + + public void testFileCompareNonClassStaticNegative() throws IOException { + MessageHandler holder = new MessageHandler(); + File basedir = new File("testdata/testCompareTextFiles/differentFile"); + File expectedBaseDir = new File(basedir, "expected"); + File actualBaseDir = new File(basedir, "actual"); + String filename = "TestUtilTest.java"; + File expected = new File(expectedBaseDir, filename); + File actual = new File(actualBaseDir, filename); + + assertTrue(!TestUtil.sameFiles(holder, expected, actual)); + + 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"); + return; + } + MessageHandler holder = new MessageHandler(); + File classBase = new File(UtilTests.TESTING_UTIL_PATH + "/testdata/testCompareClassFiles"); + String path = "org/aspectj/testingutil/TestCompareClassFile.class"; + File classFile = new File(classBase, path); + + try { + assertTrue(TestUtil.sameFiles(holder, classFile, classFile)); + assertTrue(TestUtil.sameFiles(holder, classBase, classBase, path)); + } finally { + if (0 < holder.numMessages(null, true)) { + MessageUtil.print(System.out, holder); + } + } + } + +} diff --git a/testing-util/src/test/java/org/aspectj/testingutil/UtilTests.java b/testing-util/src/test/java/org/aspectj/testingutil/UtilTests.java new file mode 100644 index 000000000..b2bbc27fb --- /dev/null +++ b/testing-util/src/test/java/org/aspectj/testingutil/UtilTests.java @@ -0,0 +1,32 @@ +/* ******************************************************************* + * Copyright (c) 1999-2001 Xerox Corporation, + * 2002 Palo Alto Research Center, Incorporated (PARC). + * All rights reserved. + * This program and the accompanying materials are made available + * under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Xerox/PARC initial implementation + * ******************************************************************/ +package org.aspectj.testingutil; + +import junit.framework.*; + +public class UtilTests extends TestCase { + + public static final String TESTING_UTIL_PATH = "../testing-util"; + public static Test suite() { + TestSuite suite = new TestSuite(UtilTests.class.getName()); + // for now, do not include SuiteTest because it would take 15 minutes + //$JUnit-BEGIN$ + suite.addTestSuite(TestUtilTest.class); + //$JUnit-END$ + return suite; + } + + public UtilTests(String name) { super(name); } + +} + |