Merge changes I3c1f5ac1,I269c9aa8
* changes: Switch code point table Test for code point table (dicttool test)main
commit
fb051c3957
|
@ -304,6 +304,39 @@ public class BinaryDictDecoderEncoderTests extends AndroidTestCase {
|
||||||
"unigram with various code points"));
|
"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.
|
// Unit test for CharEncoding.readString and CharEncoding.writeString.
|
||||||
public void testCharEncoding() {
|
public void testCharEncoding() {
|
||||||
// the max length of a word in sWords is less than 50.
|
// the max length of a word in sWords is less than 50.
|
||||||
|
|
|
@ -137,10 +137,11 @@ public class Ver2DictEncoder implements DictEncoder {
|
||||||
// Make code point conversion table ordered by occurrence of code points
|
// Make code point conversion table ordered by occurrence of code points
|
||||||
// Version 201 or later have codePointTable
|
// Version 201 or later have codePointTable
|
||||||
final CodePointTable codePointTable;
|
final CodePointTable codePointTable;
|
||||||
if (formatOptions.mVersion >= FormatSpec.MINIMUM_SUPPORTED_VERSION_OF_CODE_POINT_TABLE) {
|
if (mCodePointTableMode == CODE_POINT_TABLE_OFF || formatOptions.mVersion
|
||||||
codePointTable = makeCodePointTable(dict);
|
< FormatSpec.MINIMUM_SUPPORTED_VERSION_OF_CODE_POINT_TABLE) {
|
||||||
} else {
|
|
||||||
codePointTable = new CodePointTable();
|
codePointTable = new CodePointTable();
|
||||||
|
} else {
|
||||||
|
codePointTable = makeCodePointTable(dict);
|
||||||
}
|
}
|
||||||
|
|
||||||
BinaryDictEncoderUtils.writeDictionaryHeader(mOutStream, dict, formatOptions,
|
BinaryDictEncoderUtils.writeDictionaryHeader(mOutStream, dict, formatOptions,
|
||||||
|
|
Loading…
Reference in New Issue