diff options
author | 2013-06-28 19:58:34 +0900 | |
---|---|---|
committer | 2013-07-01 15:28:32 +0900 | |
commit | 4b7acd1df6610fbe24eab04b72763de152f24176 (patch) | |
tree | 0c0dde0d2d8d779a999a74eac84ebba284182d6b /tools/dicttool/src | |
parent | 8142a7b637326e8fe8736de94246b1fffb4f2886 (diff) | |
download | latinime-4b7acd1df6610fbe24eab04b72763de152f24176.tar.gz latinime-4b7acd1df6610fbe24eab04b72763de152f24176.tar.xz latinime-4b7acd1df6610fbe24eab04b72763de152f24176.zip |
Add args to dicttool test.
Change-Id: I0667e0a5a6f6db3964cfcca5c8f083b9ceb41a2e
Diffstat (limited to 'tools/dicttool/src')
-rw-r--r-- | tools/dicttool/src/com/android/inputmethod/latin/dicttool/Test.java | 67 |
1 files changed, 57 insertions, 10 deletions
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Test.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Test.java index 827c5e3a9..df5ea35bb 100644 --- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Test.java +++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Test.java @@ -19,33 +19,80 @@ package com.android.inputmethod.latin.dicttool; import com.android.inputmethod.latin.makedict.BinaryDictIOUtilsTests; import com.android.inputmethod.latin.makedict.BinaryDictInputOutputTest; import com.android.inputmethod.latin.makedict.FusionDictionaryTest; -import com.android.inputmethod.latin.makedict.UnsupportedFormatException; -import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; /** * Dicttool command implementing self-tests. */ public class Test extends Dicttool.Command { public static final String COMMAND = "test"; + private long mSeed = System.currentTimeMillis(); + private int mMaxUnigrams = BinaryDictIOUtilsTests.DEFAULT_MAX_UNIGRAMS; + + private static final Class<?>[] sClassesToTest = { + BinaryDictOffdeviceUtilsTests.class, + FusionDictionaryTest.class, + BinaryDictInputOutputTest.class, + BinaryDictIOUtilsTests.class + }; + private ArrayList<Method> mAllTestMethods = new ArrayList<Method>(); + private ArrayList<String> mUsedTestMethods = new ArrayList<String>(); public Test() { + for (final Class<?> c : sClassesToTest) { + for (final Method m : c.getDeclaredMethods()) { + if (m.getName().startsWith("test") && Void.TYPE == m.getReturnType() + && 0 == m.getParameterTypes().length) { + mAllTestMethods.add(m); + } + } + } } @Override public String getHelp() { - return "test"; + final StringBuilder s = new StringBuilder("test [-s seed] [-m maxUnigrams] [testName...]\n" + + "If seed is not specified, the current time is used.\nTest list is:\n"); + for (final Method m : mAllTestMethods) { + s.append(" "); + s.append(m.getName()); + s.append("\n"); + } + return s.toString(); } @Override - public void run() throws IOException, UnsupportedFormatException { - test(); + public void run() throws IllegalAccessException, InstantiationException, + InvocationTargetException { + int i = 0; + while (i < mArgs.length) { + final String arg = mArgs[i++]; + if ("-s".equals(arg)) { + mSeed = Long.parseLong(mArgs[i++]); + } else if ("-m".equals(arg)) { + mMaxUnigrams = Integer.parseInt(mArgs[i++]); + } else { + mUsedTestMethods.add(arg); + } + } + runChosenTests(); } - private void test() throws IOException, UnsupportedFormatException { - new BinaryDictOffdeviceUtilsTests().testGetRawDictWorks(); - new FusionDictionaryTest().testFusion(); - new BinaryDictInputOutputTest().testFlattenNodes(); - new BinaryDictIOUtilsTests().testRandomWords(); + private void runChosenTests() throws IllegalAccessException, InstantiationException, + InvocationTargetException { + for (final Method m : mAllTestMethods) { + final Class<?> declaringClass = m.getDeclaringClass(); + if (!mUsedTestMethods.isEmpty() && !mUsedTestMethods.contains(m.getName())) continue; + final Object instance; + if (BinaryDictIOUtilsTests.class == declaringClass) { + instance = new BinaryDictIOUtilsTests(mSeed, mMaxUnigrams); + } else { + instance = declaringClass.newInstance(); + } + m.invoke(instance); + } } } |