1/*
2 * Copyright (C) 2012 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
17package com.android.inputmethod.latin.spellcheck;
18
19import android.test.suitebuilder.annotation.LargeTest;
20import android.text.style.SuggestionSpan;
21
22import com.android.inputmethod.latin.InputTestsBase;
23
24@LargeTest
25public class AndroidSpellCheckerServiceTest extends InputTestsBase {
26    public void testSpellchecker() {
27        changeLanguage("en_US");
28        mEditText.setText("tgis ");
29        mEditText.setSelection(mEditText.getText().length());
30        mEditText.onAttachedToWindow();
31        sleep(1000);
32        runMessages();
33        sleep(1000);
34
35        final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
36        // If no span, the following will crash
37        final String[] suggestions = span.getSuggestions();
38        // For this test we consider "tgis" should yield at least 2 suggestions (at this moment
39        // it yields 5).
40        assertTrue(suggestions.length >= 2);
41        // We also assume the top suggestion should be "this".
42        assertEquals("Test basic spell checking", "this", suggestions[0]);
43    }
44
45    public void testRussianSpellchecker() {
46        changeLanguage("ru");
47        mEditText.onAttachedToWindow();
48        mEditText.setText("годп ");
49        mEditText.setSelection(mEditText.getText().length());
50        mEditText.onAttachedToWindow();
51        sleep(1000);
52        runMessages();
53        sleep(1000);
54
55        final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
56        // We don't ship with Russian LM
57        assertNull(span.getSpan());
58    }
59
60    public void testSpellcheckWithPeriods() {
61        changeLanguage("en_US");
62        mEditText.setText("I'm.sure ");
63        mEditText.setSelection(mEditText.getText().length());
64        mEditText.onAttachedToWindow();
65        sleep(1000);
66        runMessages();
67        sleep(1000);
68
69        final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
70        // If no span, the following will crash
71        final String[] suggestions = span.getSuggestions();
72        // The first suggestion should be "I'm sure".
73        assertEquals("Test spell checking of mistyped period for space", "I'm sure",
74                suggestions[0]);
75    }
76}
77