2
2
package be.scri.ui
3
3
4
4
import android.view.inputmethod.InputConnection
5
+ import android.widget.Button
5
6
import androidx.test.ext.junit.runners.AndroidJUnit4
6
7
import be.scri.helpers.KeyHandler
7
8
import be.scri.helpers.KeyboardBase
9
+ import be.scri.helpers.SuggestionHandler
8
10
import be.scri.services.GeneralKeyboardIME
9
11
import be.scri.services.GeneralKeyboardIME.ScribeState
10
12
import io.mockk.every
@@ -19,6 +21,10 @@ class KeyboardTest {
19
21
private lateinit var mockIME: GeneralKeyboardIME
20
22
private lateinit var mockInputConnection: InputConnection
21
23
private lateinit var keyHandler: KeyHandler
24
+ private lateinit var suggestionHandler: SuggestionHandler
25
+ private lateinit var translateBtn: Button
26
+ private lateinit var conjugateBtn: Button
27
+ private lateinit var pluralBtn: Button
22
28
23
29
@Before
24
30
fun setUp () {
@@ -28,8 +34,16 @@ class KeyboardTest {
28
34
every { mockIME.currentInputConnection } returns mockInputConnection
29
35
every { mockIME.keyboard } returns mockk(relaxed = true )
30
36
every { mockIME.currentState } returns ScribeState .IDLE
37
+ every { mockIME.language } returns " German"
31
38
32
39
keyHandler = KeyHandler (mockIME)
40
+ suggestionHandler = SuggestionHandler (mockIME)
41
+ translateBtn = mockk(relaxed = true )
42
+ conjugateBtn = mockk(relaxed = true )
43
+ pluralBtn = mockk(relaxed = true )
44
+ every { mockIME.binding.translateBtn } returns translateBtn
45
+ every { mockIME.binding.conjugateBtn } returns conjugateBtn
46
+ every { mockIME.binding.pluralBtn } returns pluralBtn
33
47
}
34
48
35
49
@Test
@@ -59,4 +73,23 @@ class KeyboardTest {
59
73
verify(exactly = 1 ) { mockIME.handleDelete(false ) }
60
74
verify(exactly = 1 ) { mockInputConnection.deleteSurroundingText(1 , 0 ) }
61
75
}
76
+
77
+ @Test
78
+ fun processSuggestions () {
79
+ every { mockIME.findGenderForLastWord(any(), " in" ) } returns listOf (" Neuter" )
80
+ every { mockIME.findWhetherWordIsPlural(any(), " in" ) } returns false
81
+ every { mockIME.getCaseAnnotationForPreposition(any(), " in" ) } returns null
82
+
83
+ every { mockIME.updateAutoSuggestText(any(), any(), any(), any()) } answers {
84
+ conjugateBtn.text = " der"
85
+ pluralBtn.text = " den"
86
+ translateBtn.text = " die"
87
+ }
88
+
89
+ suggestionHandler.processLinguisticSuggestions(" in" )
90
+
91
+ verify { conjugateBtn.text = match { it.isNotEmpty() } }
92
+ verify { pluralBtn.text = match { it.isNotEmpty() } }
93
+ verify { translateBtn.text = match { it.isNotEmpty() } }
94
+ }
62
95
}
0 commit comments