1package ui
2
3import (
4 "testing"
5
6 renderer "github.com/bnema/vev-vt"
7 "github.com/stretchr/testify/require"
8)
9
10func TestTextInputEditsValue(t *testing.T) {
11 var input TextInput
12
13 input.Insert('w')
14 input.Insert('ø')
15 input.Insert('k')
16 require.Equal(t, "wøk", input.Value())
17
18 input.Backspace()
19 require.Equal(t, "wø", input.Value())
20
21 input.SetValue("ship")
22 require.Equal(t, "ship", input.Value())
23}
24
25func TestDrawInputLineDrawsPrefixValueAndCaret(t *testing.T) {
26 frame := renderer.NewFrame(6, 1)
27 style := renderer.DefaultStyle()
28
29 DrawInputLine(frame, 0, "> ", "abc", style)
30
31 require.Equal(t, '>', frame.At(0, 0).Rune)
32 require.Equal(t, ' ', frame.At(1, 0).Rune)
33 require.Equal(t, 'a', frame.At(2, 0).Rune)
34 require.Equal(t, 'b', frame.At(3, 0).Rune)
35 require.Equal(t, 'c', frame.At(4, 0).Rune)
36 require.Equal(t, ' ', frame.At(5, 0).Rune)
37 require.True(t, frame.At(5, 0).Style.Inverse)
38}
39
40func TestDrawInputLineClipsCaret(t *testing.T) {
41 frame := renderer.NewFrame(4, 1)
42 style := renderer.DefaultStyle()
43
44 DrawInputLine(frame, 0, "> ", "abcdef", style)
45
46 require.Equal(t, '>', frame.At(0, 0).Rune)
47 require.Equal(t, ' ', frame.At(1, 0).Rune)
48 require.Equal(t, 'a', frame.At(2, 0).Rune)
49 require.Equal(t, 'b', frame.At(3, 0).Rune)
50 require.False(t, frame.At(3, 0).Style.Inverse, "caret beyond clip should not overwrite final value cell")
51}
52
53func TestDrawInputLineIgnoresInvalidRow(t *testing.T) {
54 frame := renderer.NewFrame(4, 1)
55
56 DrawInputLine(frame, 2, "> ", "abc", renderer.DefaultStyle())
57
58 require.Equal(t, ' ', frame.At(0, 0).Rune)
59}