code-intelligence.com/cifuzz@v0.40.0/pkg/dialog/dialog_test.go (about) 1 package dialog 2 3 import ( 4 "bytes" 5 "os" 6 "testing" 7 8 "atomicgo.dev/keyboard" 9 "atomicgo.dev/keyboard/keys" 10 "github.com/pterm/pterm" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestSelect(t *testing.T) { 16 var outBuf bytes.Buffer 17 pterm.SetDefaultOutput(&outBuf) 18 19 defer pterm.SetDefaultOutput(os.Stdout) 20 21 go func() { 22 require.NoError(t, keyboard.SimulateKeyPress(keys.Down)) 23 require.NoError(t, keyboard.SimulateKeyPress(keys.Down)) 24 require.NoError(t, keyboard.SimulateKeyPress(keys.Up)) 25 require.NoError(t, keyboard.SimulateKeyPress(keys.Enter)) 26 }() 27 28 items := map[string]string{ 29 "Item No1": "item1", 30 "Item No2": "item2", 31 "Item No3": "item3", 32 "Item No4": "item4", 33 } 34 userInput, err := Select("Test", items, true) 35 require.NoError(t, err) 36 assert.Equal(t, "item2", userInput) 37 } 38 39 func TestMultiSelect(t *testing.T) { 40 var outBuf bytes.Buffer 41 pterm.SetDefaultOutput(&outBuf) 42 43 defer pterm.SetDefaultOutput(os.Stdout) 44 45 go func() { 46 require.NoError(t, keyboard.SimulateKeyPress(keys.Down)) 47 require.NoError(t, keyboard.SimulateKeyPress(keys.Down)) 48 require.NoError(t, keyboard.SimulateKeyPress(keys.Up)) 49 require.NoError(t, keyboard.SimulateKeyPress(keys.Space)) 50 require.NoError(t, keyboard.SimulateKeyPress(keys.Up)) 51 require.NoError(t, keyboard.SimulateKeyPress(keys.Space)) 52 require.NoError(t, keyboard.SimulateKeyPress(keys.Enter)) 53 }() 54 55 items := map[string]string{ 56 "Item No1": "item1", 57 "Item No2": "item2", 58 "Item No3": "item3", 59 "Item No4": "item4", 60 } 61 userInput, err := MultiSelect("Test", items) 62 require.NoError(t, err) 63 assert.Equal(t, []string{"item1", "item2"}, userInput) 64 }