• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.inputmethod.latin.makedict;
18 
19 import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
20 import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFactory;
21 import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFromByteArrayFactory;
22 import com.android.inputmethod.latin.makedict.DictDecoder.
23         DictionaryBufferFromReadOnlyByteBufferFactory;
24 import com.android.inputmethod.latin.makedict.DictDecoder.
25         DictionaryBufferFromWritableByteBufferFactory;
26 
27 import android.test.AndroidTestCase;
28 import android.util.Log;
29 
30 import java.io.File;
31 import java.io.FileOutputStream;
32 import java.io.IOException;
33 
34 /**
35  * Unit tests for Ver3DictDecoder
36  */
37 public class Ver3DictDecoderTests extends AndroidTestCase {
38     private static final String TAG = Ver3DictDecoderTests.class.getSimpleName();
39 
40     private final byte[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
41 
42     // Utilities for testing
writeDataToFile(final File file)43     public void writeDataToFile(final File file) {
44         FileOutputStream outStream = null;
45         try {
46             outStream = new FileOutputStream(file);
47             outStream.write(data);
48         } catch (IOException e) {
49             fail ("Can't write data to the test file");
50         } finally {
51             if (outStream != null) {
52                 try {
53                     outStream.close();
54                 } catch (IOException e) {
55                     Log.e(TAG, "Failed to close the output stream", e);
56                 }
57             }
58         }
59     }
60 
61     @SuppressWarnings("null")
runTestOpenBuffer(final String testName, final DictionaryBufferFactory factory)62     public void runTestOpenBuffer(final String testName, final DictionaryBufferFactory factory) {
63         File testFile = null;
64         try {
65             testFile = File.createTempFile(testName, ".tmp", getContext().getCacheDir());
66         } catch (IOException e) {
67             Log.e(TAG, "IOException while the creating temporary file", e);
68         }
69 
70         assertNotNull(testFile);
71         final Ver3DictDecoder dictDecoder = new Ver3DictDecoder(testFile, factory);
72         try {
73             dictDecoder.openDictBuffer();
74         } catch (Exception e) {
75             Log.e(TAG, "Failed to open the buffer", e);
76         }
77 
78         writeDataToFile(testFile);
79 
80         try {
81             dictDecoder.openDictBuffer();
82         } catch (Exception e) {
83             Log.e(TAG, "Raised the exception while opening buffer", e);
84         }
85 
86         assertEquals(testFile.length(), dictDecoder.getDictBuffer().capacity());
87     }
88 
testOpenBufferWithByteBuffer()89     public void testOpenBufferWithByteBuffer() {
90         runTestOpenBuffer("testOpenBufferWithByteBuffer",
91                 new DictionaryBufferFromReadOnlyByteBufferFactory());
92     }
93 
testOpenBufferWithByteArray()94     public void testOpenBufferWithByteArray() {
95         runTestOpenBuffer("testOpenBufferWithByteArray",
96                 new DictionaryBufferFromByteArrayFactory());
97     }
98 
testOpenBufferWithWritableByteBuffer()99     public void testOpenBufferWithWritableByteBuffer() {
100         runTestOpenBuffer("testOpenBufferWithWritableByteBuffer",
101                 new DictionaryBufferFromWritableByteBufferFactory());
102     }
103 
104     @SuppressWarnings("null")
runTestGetBuffer(final String testName, final DictionaryBufferFactory factory)105     public void runTestGetBuffer(final String testName, final DictionaryBufferFactory factory) {
106         File testFile = null;
107         try {
108             testFile = File.createTempFile(testName, ".tmp", getContext().getCacheDir());
109         } catch (IOException e) {
110             Log.e(TAG, "IOException while the creating temporary file", e);
111         }
112 
113         final Ver3DictDecoder dictDecoder = new Ver3DictDecoder(testFile, factory);
114 
115         // the default return value of getBuffer() must be null.
116         assertNull("the default return value of getBuffer() is not null",
117                 dictDecoder.getDictBuffer());
118 
119         writeDataToFile(testFile);
120         assertTrue(testFile.exists());
121         Log.d(TAG, "file length = " + testFile.length());
122 
123         DictBuffer dictBuffer = null;
124         try {
125             dictBuffer = dictDecoder.openAndGetDictBuffer();
126         } catch (IOException e) {
127             Log.e(TAG, "Failed to open and get the buffer", e);
128         }
129         assertNotNull("the buffer must not be null", dictBuffer);
130 
131         for (int i = 0; i < data.length; ++i) {
132             assertEquals(data[i], dictBuffer.readUnsignedByte());
133         }
134     }
135 
testGetBufferWithByteBuffer()136     public void testGetBufferWithByteBuffer() {
137         runTestGetBuffer("testGetBufferWithByteBuffer",
138                 new DictionaryBufferFromReadOnlyByteBufferFactory());
139     }
140 
testGetBufferWithByteArray()141     public void testGetBufferWithByteArray() {
142         runTestGetBuffer("testGetBufferWithByteArray",
143                 new DictionaryBufferFromByteArrayFactory());
144     }
145 
testGetBufferWithWritableByteBuffer()146     public void testGetBufferWithWritableByteBuffer() {
147         runTestGetBuffer("testGetBufferWithWritableByteBuffer",
148                 new DictionaryBufferFromWritableByteBufferFactory());
149     }
150 }
151