Make the bad header a checked exception and fix dicttool test
Change-Id: If780a2a1cb722aee83d910904c0a6315add9552d
This commit is contained in:
parent
2c25c7c9e1
commit
3df617323e
2 changed files with 20 additions and 6 deletions
|
@ -352,18 +352,19 @@ public final class FormatSpec {
|
|||
public static final String DICTIONARY_ID_ATTRIBUTE = "dictionary";
|
||||
private static final String DICTIONARY_DESCRIPTION_ATTRIBUTE = "description";
|
||||
public FileHeader(final int headerSize, final DictionaryOptions dictionaryOptions,
|
||||
final FormatOptions formatOptions) {
|
||||
final FormatOptions formatOptions) throws UnsupportedFormatException {
|
||||
mDictionaryOptions = dictionaryOptions;
|
||||
mFormatOptions = formatOptions;
|
||||
mBodyOffset = formatOptions.mVersion < VERSION4 ? headerSize : 0;
|
||||
if (null == getLocaleString()) {
|
||||
throw new RuntimeException("Cannot create a FileHeader without a locale");
|
||||
throw new UnsupportedFormatException("Cannot create a FileHeader without a locale");
|
||||
}
|
||||
if (null == getVersion()) {
|
||||
throw new RuntimeException("Cannot create a FileHeader without a version");
|
||||
throw new UnsupportedFormatException(
|
||||
"Cannot create a FileHeader without a version");
|
||||
}
|
||||
if (null == getId()) {
|
||||
throw new RuntimeException("Cannot create a FileHeader without an ID");
|
||||
throw new UnsupportedFormatException("Cannot create a FileHeader without an ID");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -42,9 +42,16 @@ public class BinaryDictOffdeviceUtilsTests extends TestCase {
|
|||
private static final int TEST_FREQ = 37; // Some arbitrary value unlikely to happen by chance
|
||||
|
||||
public void testGetRawDictWorks() throws IOException, UnsupportedFormatException {
|
||||
final String VERSION = "1";
|
||||
final String LOCALE = "test";
|
||||
final String ID = "main:test";
|
||||
|
||||
// Create a thrice-compressed dictionary file.
|
||||
final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
|
||||
new DictionaryOptions(new HashMap<String, String>()));
|
||||
final DictionaryOptions testOptions = new DictionaryOptions(new HashMap<String, String>());
|
||||
testOptions.mAttributes.put(FormatSpec.FileHeader.DICTIONARY_VERSION_ATTRIBUTE, VERSION);
|
||||
testOptions.mAttributes.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_ATTRIBUTE, LOCALE);
|
||||
testOptions.mAttributes.put(FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE, ID);
|
||||
final FusionDictionary dict = new FusionDictionary(new PtNodeArray(), testOptions);
|
||||
dict.add("foo", TEST_FREQ, null, false /* isNotAWord */);
|
||||
dict.add("fta", 1, null, false /* isNotAWord */);
|
||||
dict.add("ftb", 1, null, false /* isNotAWord */);
|
||||
|
@ -72,6 +79,12 @@ public class BinaryDictOffdeviceUtilsTests extends TestCase {
|
|||
final FusionDictionary resultDict = dictDecoder.readDictionaryBinary(
|
||||
null /* dict : an optional dictionary to add words to, or null */,
|
||||
false /* deleteDictIfBroken */);
|
||||
assertEquals("Wrong version attribute", VERSION, resultDict.mOptions.mAttributes.get(
|
||||
FormatSpec.FileHeader.DICTIONARY_VERSION_ATTRIBUTE));
|
||||
assertEquals("Wrong locale attribute", LOCALE, resultDict.mOptions.mAttributes.get(
|
||||
FormatSpec.FileHeader.DICTIONARY_LOCALE_ATTRIBUTE));
|
||||
assertEquals("Wrong id attribute", ID, resultDict.mOptions.mAttributes.get(
|
||||
FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE));
|
||||
assertEquals("Dictionary can't be read back correctly",
|
||||
FusionDictionary.findWordInTree(resultDict.mRootNodeArray, "foo").getFrequency(),
|
||||
TEST_FREQ);
|
||||
|
|
Loading…
Reference in a new issue