Loading tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java +59 −37 Original line number Original line Diff line number Diff line Loading @@ -64,6 +64,10 @@ public class BinaryDictIOTests extends AndroidTestCase { CollectionUtils.newSparseArray(); CollectionUtils.newSparseArray(); private static final FormatSpec.FormatOptions VERSION2 = new FormatSpec.FormatOptions(2); private static final FormatSpec.FormatOptions VERSION2 = new FormatSpec.FormatOptions(2); private static final FormatSpec.FormatOptions VERSION3_WITHOUT_PARENTADDRESS = new FormatSpec.FormatOptions(3, false); private static final FormatSpec.FormatOptions VERSION3_WITH_PARENTADDRESS = new FormatSpec.FormatOptions(3, true); private static final String[] CHARACTERS = { private static final String[] CHARACTERS = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", Loading Loading @@ -173,7 +177,8 @@ public class BinaryDictIOTests extends AndroidTestCase { } } } } private long timeWritingDictToFile(final File file, final FusionDictionary dict) { private long timeWritingDictToFile(final File file, final FusionDictionary dict, final FormatSpec.FormatOptions formatOptions) { long now = -1, diff = -1; long now = -1, diff = -1; Loading @@ -181,7 +186,7 @@ public class BinaryDictIOTests extends AndroidTestCase { final FileOutputStream out = new FileOutputStream(file); final FileOutputStream out = new FileOutputStream(file); now = System.currentTimeMillis(); now = System.currentTimeMillis(); BinaryDictInputOutput.writeDictionaryBinary(out, dict, VERSION2); BinaryDictInputOutput.writeDictionaryBinary(out, dict, formatOptions); diff = System.currentTimeMillis() - now; diff = System.currentTimeMillis() - now; out.flush(); out.flush(); Loading Loading @@ -226,6 +231,14 @@ public class BinaryDictIOTests extends AndroidTestCase { } } } } private String outputOptions(final int bufferType, final FormatSpec.FormatOptions formatOptions) { String result = " : buffer type = " + ((bufferType == USE_BYTE_BUFFER) ? "byte buffer" : "byte array"); result += " : version = " + formatOptions.mVersion; return result + ", hasParentAddress = " + formatOptions.mHasParentAddress; } // Tests for readDictionaryBinary and writeDictionaryBinary // Tests for readDictionaryBinary and writeDictionaryBinary private long timeReadingAndCheckDict(final File file, final List<String> words, private long timeReadingAndCheckDict(final File file, final List<String> words, Loading Loading @@ -253,7 +266,8 @@ public class BinaryDictIOTests extends AndroidTestCase { // Tests for readDictionaryBinary and writeDictionaryBinary // Tests for readDictionaryBinary and writeDictionaryBinary private String runReadAndWrite(final List<String> words, private String runReadAndWrite(final List<String> words, final SparseArray<List<Integer>> bigrams, final Map<String, List<String>> shortcuts, final SparseArray<List<Integer>> bigrams, final Map<String, List<String>> shortcuts, final int bufferType, final String message) { final int bufferType, final FormatSpec.FormatOptions formatOptions, final String message) { File file = null; File file = null; try { try { file = File.createTempFile("runReadAndWrite", ".dict"); file = File.createTempFile("runReadAndWrite", ".dict"); Loading @@ -263,28 +277,34 @@ public class BinaryDictIOTests extends AndroidTestCase { assertNotNull(file); assertNotNull(file); final FusionDictionary dict = new FusionDictionary(new Node(), final FusionDictionary dict = new FusionDictionary(new Node(), new FusionDictionary.DictionaryOptions( new FusionDictionary.DictionaryOptions(new HashMap<String,String>(), false, false)); new HashMap<String,String>(), false, false)); addUnigrams(words.size(), dict, words, shortcuts); addUnigrams(words.size(), dict, words, shortcuts); addBigrams(dict, words, bigrams); addBigrams(dict, words, bigrams); checkDictionary(dict, words, bigrams, shortcuts); checkDictionary(dict, words, bigrams, shortcuts); final long write = timeWritingDictToFile(file, dict); final long write = timeWritingDictToFile(file, dict, formatOptions); final long read = timeReadingAndCheckDict(file, words, bigrams, shortcuts, bufferType); final long read = timeReadingAndCheckDict(file, words, bigrams, shortcuts, bufferType); return "PROF: read=" + read + "ms, write=" + write + "ms :" + message + return "PROF: read=" + read + "ms, write=" + write + "ms :" + message " : buffer type = " + bufferType; + " : " + outputOptions(bufferType, formatOptions); } private void runReadAndWriteTests(final List<String> results, final int bufferType, final FormatSpec.FormatOptions formatOptions) { results.add(runReadAndWrite(sWords, sEmptyBigrams, null /* shortcuts */, bufferType, formatOptions, "unigram")); results.add(runReadAndWrite(sWords, sChainBigrams, null /* shortcuts */, bufferType, formatOptions, "chain")); results.add(runReadAndWrite(sWords, sStarBigrams, null /* shortcuts */, bufferType, formatOptions, "star")); } } public void testReadAndWriteWithByteBuffer() { public void testReadAndWriteWithByteBuffer() { final List<String> results = CollectionUtils.newArrayList(); final List<String> results = CollectionUtils.newArrayList(); results.add(runReadAndWrite(sWords, sEmptyBigrams, null /* shortcuts */, USE_BYTE_BUFFER, runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION2); "unigram")); runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION3_WITHOUT_PARENTADDRESS); results.add(runReadAndWrite(sWords, sChainBigrams, null /* shortcuts */, USE_BYTE_BUFFER, runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION3_WITH_PARENTADDRESS); "chain")); results.add(runReadAndWrite(sWords, sStarBigrams, null /* shortcuts */, USE_BYTE_BUFFER, "star")); for (final String result : results) { for (final String result : results) { Log.d(TAG, result); Log.d(TAG, result); Loading @@ -294,12 +314,9 @@ public class BinaryDictIOTests extends AndroidTestCase { public void testReadAndWriteWithByteArray() { public void testReadAndWriteWithByteArray() { final List<String> results = CollectionUtils.newArrayList(); final List<String> results = CollectionUtils.newArrayList(); results.add(runReadAndWrite(sWords, sEmptyBigrams, null /* shortcuts */, USE_BYTE_ARRAY, runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION2); "unigram")); runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION3_WITHOUT_PARENTADDRESS); results.add(runReadAndWrite(sWords, sChainBigrams, null /* shortcuts */, USE_BYTE_ARRAY, runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION3_WITH_PARENTADDRESS); "chain")); results.add(runReadAndWrite(sWords, sStarBigrams, null /* shortcuts */, USE_BYTE_ARRAY, "star")); for (final String result : results) { for (final String result : results) { Log.d(TAG, result); Log.d(TAG, result); Loading Loading @@ -391,7 +408,7 @@ public class BinaryDictIOTests extends AndroidTestCase { private String runReadUnigramsAndBigramsBinary(final List<String> words, private String runReadUnigramsAndBigramsBinary(final List<String> words, final SparseArray<List<Integer>> bigrams, final int bufferType, final SparseArray<List<Integer>> bigrams, final int bufferType, final String message) { final FormatSpec.FormatOptions formatOptions, final String message) { File file = null; File file = null; try { try { file = File.createTempFile("runReadUnigrams", ".dict"); file = File.createTempFile("runReadUnigrams", ".dict"); Loading @@ -407,25 +424,32 @@ public class BinaryDictIOTests extends AndroidTestCase { addUnigrams(words.size(), dict, words, null /* shortcutMap */); addUnigrams(words.size(), dict, words, null /* shortcutMap */); addBigrams(dict, words, bigrams); addBigrams(dict, words, bigrams); timeWritingDictToFile(file, dict); timeWritingDictToFile(file, dict, formatOptions); long wordMap = timeAndCheckReadUnigramsAndBigramsBinary(file, words, bigrams, bufferType); long wordMap = timeAndCheckReadUnigramsAndBigramsBinary(file, words, bigrams, bufferType); long fullReading = timeReadingAndCheckDict(file, words, bigrams, null /* shortcutMap */, long fullReading = timeReadingAndCheckDict(file, words, bigrams, null /* shortcutMap */, bufferType); bufferType); return "readDictionaryBinary=" + fullReading + ", readUnigramsAndBigramsBinary=" + wordMap return "readDictionaryBinary=" + fullReading + ", readUnigramsAndBigramsBinary=" + wordMap + " : " + message + " : buffer type = " + bufferType; + " : " + message + " : " + outputOptions(bufferType, formatOptions); } private void runReadUnigramsAndBigramsTests(final List<String> results, final int bufferType, final FormatSpec.FormatOptions formatOptions) { results.add(runReadUnigramsAndBigramsBinary(sWords, sEmptyBigrams, bufferType, formatOptions, "unigram")); results.add(runReadUnigramsAndBigramsBinary(sWords, sChainBigrams, bufferType, formatOptions, "chain")); results.add(runReadUnigramsAndBigramsBinary(sWords, sChainBigrams, bufferType, formatOptions, "star")); } } public void testReadUnigramsAndBigramsBinaryWithByteBuffer() { public void testReadUnigramsAndBigramsBinaryWithByteBuffer() { final List<String> results = CollectionUtils.newArrayList(); final List<String> results = CollectionUtils.newArrayList(); results.add(runReadUnigramsAndBigramsBinary(sWords, sEmptyBigrams, USE_BYTE_BUFFER, runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION2); "unigram")); runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION3_WITHOUT_PARENTADDRESS); results.add(runReadUnigramsAndBigramsBinary(sWords, sChainBigrams, USE_BYTE_BUFFER, runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION3_WITH_PARENTADDRESS); "chain")); results.add(runReadUnigramsAndBigramsBinary(sWords, sStarBigrams, USE_BYTE_BUFFER, "star")); for (final String result : results) { for (final String result : results) { Log.d(TAG, result); Log.d(TAG, result); Loading @@ -435,11 +459,9 @@ public class BinaryDictIOTests extends AndroidTestCase { public void testReadUnigramsAndBigramsBinaryWithByteArray() { public void testReadUnigramsAndBigramsBinaryWithByteArray() { final List<String> results = CollectionUtils.newArrayList(); final List<String> results = CollectionUtils.newArrayList(); results.add(runReadUnigramsAndBigramsBinary(sWords, sEmptyBigrams, USE_BYTE_ARRAY, runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION2); "unigram")); runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION3_WITHOUT_PARENTADDRESS); results.add(runReadUnigramsAndBigramsBinary(sWords, sChainBigrams, USE_BYTE_ARRAY, runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION3_WITH_PARENTADDRESS); "chain")); results.add(runReadUnigramsAndBigramsBinary(sWords, sStarBigrams, USE_BYTE_ARRAY, "star")); for (final String result : results) { for (final String result : results) { Log.d(TAG, result); Log.d(TAG, result); Loading Loading
tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java +59 −37 Original line number Original line Diff line number Diff line Loading @@ -64,6 +64,10 @@ public class BinaryDictIOTests extends AndroidTestCase { CollectionUtils.newSparseArray(); CollectionUtils.newSparseArray(); private static final FormatSpec.FormatOptions VERSION2 = new FormatSpec.FormatOptions(2); private static final FormatSpec.FormatOptions VERSION2 = new FormatSpec.FormatOptions(2); private static final FormatSpec.FormatOptions VERSION3_WITHOUT_PARENTADDRESS = new FormatSpec.FormatOptions(3, false); private static final FormatSpec.FormatOptions VERSION3_WITH_PARENTADDRESS = new FormatSpec.FormatOptions(3, true); private static final String[] CHARACTERS = { private static final String[] CHARACTERS = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", Loading Loading @@ -173,7 +177,8 @@ public class BinaryDictIOTests extends AndroidTestCase { } } } } private long timeWritingDictToFile(final File file, final FusionDictionary dict) { private long timeWritingDictToFile(final File file, final FusionDictionary dict, final FormatSpec.FormatOptions formatOptions) { long now = -1, diff = -1; long now = -1, diff = -1; Loading @@ -181,7 +186,7 @@ public class BinaryDictIOTests extends AndroidTestCase { final FileOutputStream out = new FileOutputStream(file); final FileOutputStream out = new FileOutputStream(file); now = System.currentTimeMillis(); now = System.currentTimeMillis(); BinaryDictInputOutput.writeDictionaryBinary(out, dict, VERSION2); BinaryDictInputOutput.writeDictionaryBinary(out, dict, formatOptions); diff = System.currentTimeMillis() - now; diff = System.currentTimeMillis() - now; out.flush(); out.flush(); Loading Loading @@ -226,6 +231,14 @@ public class BinaryDictIOTests extends AndroidTestCase { } } } } private String outputOptions(final int bufferType, final FormatSpec.FormatOptions formatOptions) { String result = " : buffer type = " + ((bufferType == USE_BYTE_BUFFER) ? "byte buffer" : "byte array"); result += " : version = " + formatOptions.mVersion; return result + ", hasParentAddress = " + formatOptions.mHasParentAddress; } // Tests for readDictionaryBinary and writeDictionaryBinary // Tests for readDictionaryBinary and writeDictionaryBinary private long timeReadingAndCheckDict(final File file, final List<String> words, private long timeReadingAndCheckDict(final File file, final List<String> words, Loading Loading @@ -253,7 +266,8 @@ public class BinaryDictIOTests extends AndroidTestCase { // Tests for readDictionaryBinary and writeDictionaryBinary // Tests for readDictionaryBinary and writeDictionaryBinary private String runReadAndWrite(final List<String> words, private String runReadAndWrite(final List<String> words, final SparseArray<List<Integer>> bigrams, final Map<String, List<String>> shortcuts, final SparseArray<List<Integer>> bigrams, final Map<String, List<String>> shortcuts, final int bufferType, final String message) { final int bufferType, final FormatSpec.FormatOptions formatOptions, final String message) { File file = null; File file = null; try { try { file = File.createTempFile("runReadAndWrite", ".dict"); file = File.createTempFile("runReadAndWrite", ".dict"); Loading @@ -263,28 +277,34 @@ public class BinaryDictIOTests extends AndroidTestCase { assertNotNull(file); assertNotNull(file); final FusionDictionary dict = new FusionDictionary(new Node(), final FusionDictionary dict = new FusionDictionary(new Node(), new FusionDictionary.DictionaryOptions( new FusionDictionary.DictionaryOptions(new HashMap<String,String>(), false, false)); new HashMap<String,String>(), false, false)); addUnigrams(words.size(), dict, words, shortcuts); addUnigrams(words.size(), dict, words, shortcuts); addBigrams(dict, words, bigrams); addBigrams(dict, words, bigrams); checkDictionary(dict, words, bigrams, shortcuts); checkDictionary(dict, words, bigrams, shortcuts); final long write = timeWritingDictToFile(file, dict); final long write = timeWritingDictToFile(file, dict, formatOptions); final long read = timeReadingAndCheckDict(file, words, bigrams, shortcuts, bufferType); final long read = timeReadingAndCheckDict(file, words, bigrams, shortcuts, bufferType); return "PROF: read=" + read + "ms, write=" + write + "ms :" + message + return "PROF: read=" + read + "ms, write=" + write + "ms :" + message " : buffer type = " + bufferType; + " : " + outputOptions(bufferType, formatOptions); } private void runReadAndWriteTests(final List<String> results, final int bufferType, final FormatSpec.FormatOptions formatOptions) { results.add(runReadAndWrite(sWords, sEmptyBigrams, null /* shortcuts */, bufferType, formatOptions, "unigram")); results.add(runReadAndWrite(sWords, sChainBigrams, null /* shortcuts */, bufferType, formatOptions, "chain")); results.add(runReadAndWrite(sWords, sStarBigrams, null /* shortcuts */, bufferType, formatOptions, "star")); } } public void testReadAndWriteWithByteBuffer() { public void testReadAndWriteWithByteBuffer() { final List<String> results = CollectionUtils.newArrayList(); final List<String> results = CollectionUtils.newArrayList(); results.add(runReadAndWrite(sWords, sEmptyBigrams, null /* shortcuts */, USE_BYTE_BUFFER, runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION2); "unigram")); runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION3_WITHOUT_PARENTADDRESS); results.add(runReadAndWrite(sWords, sChainBigrams, null /* shortcuts */, USE_BYTE_BUFFER, runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION3_WITH_PARENTADDRESS); "chain")); results.add(runReadAndWrite(sWords, sStarBigrams, null /* shortcuts */, USE_BYTE_BUFFER, "star")); for (final String result : results) { for (final String result : results) { Log.d(TAG, result); Log.d(TAG, result); Loading @@ -294,12 +314,9 @@ public class BinaryDictIOTests extends AndroidTestCase { public void testReadAndWriteWithByteArray() { public void testReadAndWriteWithByteArray() { final List<String> results = CollectionUtils.newArrayList(); final List<String> results = CollectionUtils.newArrayList(); results.add(runReadAndWrite(sWords, sEmptyBigrams, null /* shortcuts */, USE_BYTE_ARRAY, runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION2); "unigram")); runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION3_WITHOUT_PARENTADDRESS); results.add(runReadAndWrite(sWords, sChainBigrams, null /* shortcuts */, USE_BYTE_ARRAY, runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION3_WITH_PARENTADDRESS); "chain")); results.add(runReadAndWrite(sWords, sStarBigrams, null /* shortcuts */, USE_BYTE_ARRAY, "star")); for (final String result : results) { for (final String result : results) { Log.d(TAG, result); Log.d(TAG, result); Loading Loading @@ -391,7 +408,7 @@ public class BinaryDictIOTests extends AndroidTestCase { private String runReadUnigramsAndBigramsBinary(final List<String> words, private String runReadUnigramsAndBigramsBinary(final List<String> words, final SparseArray<List<Integer>> bigrams, final int bufferType, final SparseArray<List<Integer>> bigrams, final int bufferType, final String message) { final FormatSpec.FormatOptions formatOptions, final String message) { File file = null; File file = null; try { try { file = File.createTempFile("runReadUnigrams", ".dict"); file = File.createTempFile("runReadUnigrams", ".dict"); Loading @@ -407,25 +424,32 @@ public class BinaryDictIOTests extends AndroidTestCase { addUnigrams(words.size(), dict, words, null /* shortcutMap */); addUnigrams(words.size(), dict, words, null /* shortcutMap */); addBigrams(dict, words, bigrams); addBigrams(dict, words, bigrams); timeWritingDictToFile(file, dict); timeWritingDictToFile(file, dict, formatOptions); long wordMap = timeAndCheckReadUnigramsAndBigramsBinary(file, words, bigrams, bufferType); long wordMap = timeAndCheckReadUnigramsAndBigramsBinary(file, words, bigrams, bufferType); long fullReading = timeReadingAndCheckDict(file, words, bigrams, null /* shortcutMap */, long fullReading = timeReadingAndCheckDict(file, words, bigrams, null /* shortcutMap */, bufferType); bufferType); return "readDictionaryBinary=" + fullReading + ", readUnigramsAndBigramsBinary=" + wordMap return "readDictionaryBinary=" + fullReading + ", readUnigramsAndBigramsBinary=" + wordMap + " : " + message + " : buffer type = " + bufferType; + " : " + message + " : " + outputOptions(bufferType, formatOptions); } private void runReadUnigramsAndBigramsTests(final List<String> results, final int bufferType, final FormatSpec.FormatOptions formatOptions) { results.add(runReadUnigramsAndBigramsBinary(sWords, sEmptyBigrams, bufferType, formatOptions, "unigram")); results.add(runReadUnigramsAndBigramsBinary(sWords, sChainBigrams, bufferType, formatOptions, "chain")); results.add(runReadUnigramsAndBigramsBinary(sWords, sChainBigrams, bufferType, formatOptions, "star")); } } public void testReadUnigramsAndBigramsBinaryWithByteBuffer() { public void testReadUnigramsAndBigramsBinaryWithByteBuffer() { final List<String> results = CollectionUtils.newArrayList(); final List<String> results = CollectionUtils.newArrayList(); results.add(runReadUnigramsAndBigramsBinary(sWords, sEmptyBigrams, USE_BYTE_BUFFER, runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION2); "unigram")); runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION3_WITHOUT_PARENTADDRESS); results.add(runReadUnigramsAndBigramsBinary(sWords, sChainBigrams, USE_BYTE_BUFFER, runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION3_WITH_PARENTADDRESS); "chain")); results.add(runReadUnigramsAndBigramsBinary(sWords, sStarBigrams, USE_BYTE_BUFFER, "star")); for (final String result : results) { for (final String result : results) { Log.d(TAG, result); Log.d(TAG, result); Loading @@ -435,11 +459,9 @@ public class BinaryDictIOTests extends AndroidTestCase { public void testReadUnigramsAndBigramsBinaryWithByteArray() { public void testReadUnigramsAndBigramsBinaryWithByteArray() { final List<String> results = CollectionUtils.newArrayList(); final List<String> results = CollectionUtils.newArrayList(); results.add(runReadUnigramsAndBigramsBinary(sWords, sEmptyBigrams, USE_BYTE_ARRAY, runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION2); "unigram")); runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION3_WITHOUT_PARENTADDRESS); results.add(runReadUnigramsAndBigramsBinary(sWords, sChainBigrams, USE_BYTE_ARRAY, runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION3_WITH_PARENTADDRESS); "chain")); results.add(runReadUnigramsAndBigramsBinary(sWords, sStarBigrams, USE_BYTE_ARRAY, "star")); for (final String result : results) { for (final String result : results) { Log.d(TAG, result); Log.d(TAG, result); Loading