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"));
+    }
+}
