github.com/elves/elvish@v0.15.0/pkg/edit/histwalk_test.go (about)

     1  package edit
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/elves/elvish/pkg/cli/term"
     7  	"github.com/elves/elvish/pkg/store"
     8  	"github.com/elves/elvish/pkg/ui"
     9  )
    10  
    11  func TestHistWalk_Up_EndOfHistory(t *testing.T) {
    12  	f := startHistwalkTest(t)
    13  	defer f.Cleanup()
    14  
    15  	f.TTYCtrl.Inject(term.K(ui.Up))
    16  	f.TestTTYNotes(t, "end of history")
    17  }
    18  
    19  func TestHistWalk_Down_EndOfHistory(t *testing.T) {
    20  	f := startHistwalkTest(t)
    21  	defer f.Cleanup()
    22  
    23  	// Not bound by default, so we need to use evals.
    24  	evals(f.Evaler, `edit:history:down`)
    25  	f.TestTTYNotes(t, "end of history")
    26  }
    27  
    28  func TestHistWalk_Accept(t *testing.T) {
    29  	f := startHistwalkTest(t)
    30  	defer f.Cleanup()
    31  
    32  	f.TTYCtrl.Inject(term.K(ui.Right))
    33  	f.TestTTY(t,
    34  		"~> echo a", Styles,
    35  		"   vvvv  ", term.DotHere,
    36  	)
    37  }
    38  
    39  func TestHistWalk_Close(t *testing.T) {
    40  	f := startHistwalkTest(t)
    41  	defer f.Cleanup()
    42  
    43  	f.TTYCtrl.Inject(term.K('[', ui.Ctrl))
    44  	f.TestTTY(t, "~> ", term.DotHere)
    45  }
    46  
    47  func TestHistWalk_DownOrQuit(t *testing.T) {
    48  	f := startHistwalkTest(t)
    49  	defer f.Cleanup()
    50  
    51  	f.TTYCtrl.Inject(term.K(ui.Down))
    52  	f.TestTTY(t, "~> ", term.DotHere)
    53  }
    54  
    55  func TestHistory_FastForward(t *testing.T) {
    56  	f := setup(storeOp(func(s store.Store) {
    57  		s.AddCmd("echo a")
    58  	}))
    59  	defer f.Cleanup()
    60  
    61  	f.Store.AddCmd("echo b")
    62  	evals(f.Evaler, `edit:history:fast-forward`)
    63  	f.TTYCtrl.Inject(term.K(ui.Up))
    64  	f.TestTTY(t,
    65  		"~> echo b", Styles,
    66  		"   VVVV__", term.DotHere, "\n",
    67  		" HISTORY #2 ", Styles,
    68  		"************",
    69  	)
    70  }
    71  
    72  func startHistwalkTest(t *testing.T) *fixture {
    73  	// The part of the test shared by all tests.
    74  	f := setup(storeOp(func(s store.Store) {
    75  		s.AddCmd("echo a")
    76  	}))
    77  
    78  	f.TTYCtrl.Inject(term.K(ui.Up))
    79  	f.TestTTY(t,
    80  		"~> echo a", Styles,
    81  		"   VVVV__", term.DotHere, "\n",
    82  		" HISTORY #1 ", Styles,
    83  		"************",
    84  	)
    85  	return f
    86  }