Loading tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java +33 −0 Original line number Diff line number Diff line Loading @@ -304,6 +304,39 @@ public class BinaryDictDecoderEncoderTests extends AndroidTestCase { "unigram with various code points")); } public void testCharacterTableIsPresent() throws IOException, UnsupportedFormatException { final String[] wordSource = {"words", "used", "for", "testing", "a", "code point", "table"}; final List<String> words = Arrays.asList(wordSource); final String correctCodePointTable = "eotdsanirfg bclwup"; final String dictName = "codePointTableTest"; final String dictVersion = Long.toString(System.currentTimeMillis()); final String codePointTableAttribute = DictionaryHeader.CODE_POINT_TABLE_KEY; final File file = new File(dictName); // Write a test dictionary final DictEncoder dictEncoder = new Ver2DictEncoder(file, Ver2DictEncoder.CODE_POINT_TABLE_ON); final FormatSpec.FormatOptions formatOptions = new FormatSpec.FormatOptions( FormatSpec.MINIMUM_SUPPORTED_VERSION_OF_CODE_POINT_TABLE); final FusionDictionary sourcedict = new FusionDictionary(new PtNodeArray(), BinaryDictUtils.makeDictionaryOptions(dictName, dictVersion, formatOptions)); addUnigrams(words.size(), sourcedict, words, null /* shortcutMap */); dictEncoder.writeDictionary(sourcedict, formatOptions); // Read the dictionary final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length(), DictDecoder.USE_BYTEARRAY); final DictionaryHeader fileHeader = dictDecoder.readHeader(); // Check if codePointTable is present assertTrue("codePointTable is not present", fileHeader.mDictionaryOptions.mAttributes.containsKey(codePointTableAttribute)); final String codePointTable = fileHeader.mDictionaryOptions.mAttributes.get(codePointTableAttribute); // Check if codePointTable is correct assertEquals("codePointTable is incorrect", codePointTable, correctCodePointTable); } // Unit test for CharEncoding.readString and CharEncoding.writeString. public void testCharEncoding() { // the max length of a word in sWords is less than 50. Loading tests/src/com/android/inputmethod/latin/makedict/Ver2DictEncoder.java +4 −3 Original line number Diff line number Diff line Loading @@ -137,10 +137,11 @@ public class Ver2DictEncoder implements DictEncoder { // Make code point conversion table ordered by occurrence of code points // Version 201 or later have codePointTable final CodePointTable codePointTable; if (formatOptions.mVersion >= FormatSpec.MINIMUM_SUPPORTED_VERSION_OF_CODE_POINT_TABLE) { codePointTable = makeCodePointTable(dict); } else { if (mCodePointTableMode == CODE_POINT_TABLE_OFF || formatOptions.mVersion < FormatSpec.MINIMUM_SUPPORTED_VERSION_OF_CODE_POINT_TABLE) { codePointTable = new CodePointTable(); } else { codePointTable = makeCodePointTable(dict); } BinaryDictEncoderUtils.writeDictionaryHeader(mOutStream, dict, formatOptions, Loading Loading
tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java +33 −0 Original line number Diff line number Diff line Loading @@ -304,6 +304,39 @@ public class BinaryDictDecoderEncoderTests extends AndroidTestCase { "unigram with various code points")); } public void testCharacterTableIsPresent() throws IOException, UnsupportedFormatException { final String[] wordSource = {"words", "used", "for", "testing", "a", "code point", "table"}; final List<String> words = Arrays.asList(wordSource); final String correctCodePointTable = "eotdsanirfg bclwup"; final String dictName = "codePointTableTest"; final String dictVersion = Long.toString(System.currentTimeMillis()); final String codePointTableAttribute = DictionaryHeader.CODE_POINT_TABLE_KEY; final File file = new File(dictName); // Write a test dictionary final DictEncoder dictEncoder = new Ver2DictEncoder(file, Ver2DictEncoder.CODE_POINT_TABLE_ON); final FormatSpec.FormatOptions formatOptions = new FormatSpec.FormatOptions( FormatSpec.MINIMUM_SUPPORTED_VERSION_OF_CODE_POINT_TABLE); final FusionDictionary sourcedict = new FusionDictionary(new PtNodeArray(), BinaryDictUtils.makeDictionaryOptions(dictName, dictVersion, formatOptions)); addUnigrams(words.size(), sourcedict, words, null /* shortcutMap */); dictEncoder.writeDictionary(sourcedict, formatOptions); // Read the dictionary final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length(), DictDecoder.USE_BYTEARRAY); final DictionaryHeader fileHeader = dictDecoder.readHeader(); // Check if codePointTable is present assertTrue("codePointTable is not present", fileHeader.mDictionaryOptions.mAttributes.containsKey(codePointTableAttribute)); final String codePointTable = fileHeader.mDictionaryOptions.mAttributes.get(codePointTableAttribute); // Check if codePointTable is correct assertEquals("codePointTable is incorrect", codePointTable, correctCodePointTable); } // Unit test for CharEncoding.readString and CharEncoding.writeString. public void testCharEncoding() { // the max length of a word in sWords is less than 50. Loading
tests/src/com/android/inputmethod/latin/makedict/Ver2DictEncoder.java +4 −3 Original line number Diff line number Diff line Loading @@ -137,10 +137,11 @@ public class Ver2DictEncoder implements DictEncoder { // Make code point conversion table ordered by occurrence of code points // Version 201 or later have codePointTable final CodePointTable codePointTable; if (formatOptions.mVersion >= FormatSpec.MINIMUM_SUPPORTED_VERSION_OF_CODE_POINT_TABLE) { codePointTable = makeCodePointTable(dict); } else { if (mCodePointTableMode == CODE_POINT_TABLE_OFF || formatOptions.mVersion < FormatSpec.MINIMUM_SUPPORTED_VERSION_OF_CODE_POINT_TABLE) { codePointTable = new CodePointTable(); } else { codePointTable = makeCodePointTable(dict); } BinaryDictEncoderUtils.writeDictionaryHeader(mOutStream, dict, formatOptions, Loading