aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-09-03 01:13:48 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-09-03 01:13:48 +0000
commitcb1479c5ff9957ee12e93fad4331f20b7c770e1b (patch)
treec91f360ade1770b421bfe4632217e90def16129f
parent53d87a6b37b4ba9c9fe72d508e273f4fc769f7b0 (diff)
parentef0064acee819acd97a2b3ff39e4d4e1ae50cc99 (diff)
downloadlatinime-cb1479c5ff9957ee12e93fad4331f20b7c770e1b.tar.gz
latinime-cb1479c5ff9957ee12e93fad4331f20b7c770e1b.tar.xz
latinime-cb1479c5ff9957ee12e93fad4331f20b7c770e1b.zip
am ef0064ac: Merge "Add DamerauLevenshteinEditDistancePolicyTest"
* commit 'ef0064acee819acd97a2b3ff39e4d4e1ae50cc99': Add DamerauLevenshteinEditDistancePolicyTest
-rw-r--r--native/jni/NativeFileList.mk1
-rw-r--r--native/jni/tests/suggest/policyimpl/utils/damerau_levenshtein_edit_distance_policy_test.cpp65
2 files changed, 66 insertions, 0 deletions
diff --git a/native/jni/NativeFileList.mk b/native/jni/NativeFileList.mk
index 5a0aacda1..f21b54c9b 100644
--- a/native/jni/NativeFileList.mk
+++ b/native/jni/NativeFileList.mk
@@ -132,6 +132,7 @@ LATIN_IME_CORE_TEST_FILES := \
suggest/policyimpl/dictionary/utils/byte_array_utils_test.cpp \
suggest/policyimpl/dictionary/utils/sparse_table_test.cpp \
suggest/policyimpl/dictionary/utils/trie_map_test.cpp \
+ suggest/policyimpl/utils/damerau_levenshtein_edit_distance_policy_test.cpp \
utils/autocorrection_threshold_utils_test.cpp \
utils/int_array_view_test.cpp \
utils/time_keeper_test.cpp
diff --git a/native/jni/tests/suggest/policyimpl/utils/damerau_levenshtein_edit_distance_policy_test.cpp b/native/jni/tests/suggest/policyimpl/utils/damerau_levenshtein_edit_distance_policy_test.cpp
new file mode 100644
index 000000000..d13417964
--- /dev/null
+++ b/native/jni/tests/suggest/policyimpl/utils/damerau_levenshtein_edit_distance_policy_test.cpp
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2014 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.
+ */
+
+#include "suggest/policyimpl/utils/damerau_levenshtein_edit_distance_policy.h"
+
+#include <gtest/gtest.h>
+
+#include <vector>
+
+#include "suggest/policyimpl/utils/edit_distance.h"
+#include "utils/int_array_view.h"
+
+namespace latinime {
+namespace {
+
+TEST(DamerauLevenshteinEditDistancePolicyTest, TestConstructPolicy) {
+ const std::vector<int> codePoints0 = { 0x20, 0x40, 0x60 };
+ const std::vector<int> codePoints1 = { 0x10, 0x20, 0x30, 0x40, 0x50, 0x60 };
+ DamerauLevenshteinEditDistancePolicy policy(codePoints0.data(), codePoints0.size(),
+ codePoints1.data(), codePoints1.size());
+
+ EXPECT_EQ(static_cast<int>(codePoints0.size()), policy.getString0Length());
+ EXPECT_EQ(static_cast<int>(codePoints1.size()), policy.getString1Length());
+}
+
+float getEditDistance(const std::vector<int> &codePoints0, const std::vector<int> &codePoints1) {
+ DamerauLevenshteinEditDistancePolicy policy(codePoints0.data(), codePoints0.size(),
+ codePoints1.data(), codePoints1.size());
+ return EditDistance::getEditDistance(&policy);
+}
+
+TEST(DamerauLevenshteinEditDistancePolicyTest, TestEditDistance) {
+ EXPECT_FLOAT_EQ(0.0f, getEditDistance({}, {}));
+ EXPECT_FLOAT_EQ(0.0f, getEditDistance({ 1 }, { 1 }));
+ EXPECT_FLOAT_EQ(0.0f, getEditDistance({ 1, 2, 3 }, { 1, 2, 3 }));
+
+ EXPECT_FLOAT_EQ(1.0f, getEditDistance({ 1 }, { }));
+ EXPECT_FLOAT_EQ(1.0f, getEditDistance({}, { 100 }));
+ EXPECT_FLOAT_EQ(5.0f, getEditDistance({}, { 1, 2, 3, 4, 5 }));
+
+ EXPECT_FLOAT_EQ(1.0f, getEditDistance({ 0 }, { 100 }));
+ EXPECT_FLOAT_EQ(5.0f, getEditDistance({ 1, 2, 3, 4, 5 }, { 11, 12, 13, 14, 15 }));
+
+ EXPECT_FLOAT_EQ(1.0f, getEditDistance({ 1 }, { 1, 2 }));
+ EXPECT_FLOAT_EQ(2.0f, getEditDistance({ 1, 2 }, { 0, 1, 2, 3 }));
+ EXPECT_FLOAT_EQ(2.0f, getEditDistance({ 0, 1, 2, 3 }, { 1, 2 }));
+
+ EXPECT_FLOAT_EQ(1.0f, getEditDistance({ 1, 2 }, { 2, 1 }));
+ EXPECT_FLOAT_EQ(2.0f, getEditDistance({ 1, 2, 3, 4 }, { 2, 1, 4, 3 }));
+}
+} // namespace
+} // namespace latinime