Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25c884ba authored by Akifumi Yoshimoto's avatar Akifumi Yoshimoto
Browse files

Test for code point table (dicttool test)

Bug:17097992
Change-Id: I269c9aa86378f32083f8688f4ce91862d47dd181
parent 9168ab60
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -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.