@@ -253,3 +253,43 @@ func TestGridWrap_ResizeToSameSizeBeforeRender(t *testing.T) {
253253 // will crash if GridWrap scroller (not yet created) is accessed
254254 g .Resize (fyne .NewSize (0 , 0 ))
255255}
256+
257+ func TestGridWrap_TypedKey (t * testing.T ) {
258+ gridWrap := createGridWrap (20 )
259+ window := test .NewWindow (gridWrap )
260+ defer window .Close ()
261+ window .Resize (fyne .NewSize (80 , 100 ))
262+
263+ // want 3 columns to make assert navigaiton behavior
264+ assert .Equal (t , 3 , gridWrap .ColumnCount ())
265+
266+ canvas := window .Canvas ().(test.WindowlessCanvas )
267+ canvas .FocusNext ()
268+ gridWrap .TypedKey (& fyne.KeyEvent {Name : fyne .KeyDown })
269+ assert .Equal (t , 3 , gridWrap .currentHighlight )
270+
271+ gridWrap .TypedKey (& fyne.KeyEvent {Name : fyne .KeyUp })
272+ assert .Equal (t , 0 , gridWrap .currentHighlight )
273+
274+ gridWrap .TypedKey (& fyne.KeyEvent {Name : fyne .KeyLeft })
275+ assert .Equal (t , 0 , gridWrap .currentHighlight )
276+
277+ gridWrap .TypedKey (& fyne.KeyEvent {Name : fyne .KeyRight })
278+ assert .Equal (t , 1 , gridWrap .currentHighlight )
279+
280+ gridWrap .TypedKey (& fyne.KeyEvent {Name : fyne .KeyRight })
281+ assert .Equal (t , 2 , gridWrap .currentHighlight )
282+
283+ gridWrap .TypedKey (& fyne.KeyEvent {Name : fyne .KeyRight })
284+ assert .Equal (t , 3 , gridWrap .currentHighlight )
285+
286+ gridWrap .TypedKey (& fyne.KeyEvent {Name : fyne .KeyLeft })
287+ assert .Equal (t , 2 , gridWrap .currentHighlight )
288+
289+ gridWrap .TypedKey (& fyne.KeyEvent {Name : fyne .KeySpace })
290+ assert .Equal (t , []int {2 }, gridWrap .selected )
291+
292+ gridWrap .currentHighlight = 20
293+ gridWrap .TypedKey (& fyne.KeyEvent {Name : fyne .KeyRight })
294+ assert .Equal (t , 20 , gridWrap .currentHighlight )
295+ }
0 commit comments