Fix addWord.

Change-Id: Ib71dbd5954f44ca80733fa4b1048c829e1df138a
diff --git a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
index 516b842..fc87cfa 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
@@ -20,6 +20,7 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
 import com.android.inputmethod.latin.utils.CollectionUtils;
@@ -231,7 +232,7 @@
             childNode.mShortcutOnly = isShortcutOnly;
             children.add(childNode);
         }
-        if (wordLength == depth + 1 && shortcutTarget != null) {
+        if (wordLength == depth + 1) {
             // Terminate this word
             childNode.mTerminal = true;
             if (isShortcutOnly) {
@@ -351,6 +352,7 @@
     /**
      * Returns the word's frequency or -1 if not found
      */
+    @UsedForTesting
     protected int getWordFrequency(final String word) {
         // Case-sensitive search
         final Node node = searchNode(mRoots, word, 0, word.length());
diff --git a/tests/src/com/android/inputmethod/latin/ExpandableDictionaryTests.java b/tests/src/com/android/inputmethod/latin/ExpandableDictionaryTests.java
new file mode 100644
index 0000000..70be645
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/ExpandableDictionaryTests.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+/**
+ * Unit test for ExpandableDictionary
+ */
+@SmallTest
+public class ExpandableDictionaryTests extends AndroidTestCase {
+
+    private final static int UNIGRAM_FREQ = 50;
+
+    public void testAddWordAndGetWordFrequency() {
+        final ExpandableDictionary dict = new ExpandableDictionary(getContext(),
+                Dictionary.TYPE_USER);
+
+        // Add words
+        dict.addWord("abcde", "abcde", UNIGRAM_FREQ);
+        dict.addWord("abcef", null, UNIGRAM_FREQ + 1);
+
+        // Check words
+        assertFalse(dict.isValidWord("abcde"));
+        assertEquals(UNIGRAM_FREQ, dict.getWordFrequency("abcde"));
+        assertTrue(dict.isValidWord("abcef"));
+        assertEquals(UNIGRAM_FREQ+1, dict.getWordFrequency("abcef"));
+
+        dict.addWord("abc", null, UNIGRAM_FREQ + 2);
+        assertTrue(dict.isValidWord("abc"));
+        assertEquals(UNIGRAM_FREQ + 2, dict.getWordFrequency("abc"));
+
+        // Add existing word with lower frequency
+        dict.addWord("abc", null, UNIGRAM_FREQ);
+        assertEquals(UNIGRAM_FREQ + 2, dict.getWordFrequency("abc"));
+
+        // Add existing word with higher frequency
+        dict.addWord("abc", null, UNIGRAM_FREQ + 3);
+        assertEquals(UNIGRAM_FREQ + 3, dict.getWordFrequency("abc"));
+    }
+}