github.com/ladydascalie/elvish@v0.0.0-20170703214355-2964dd3ece7f/store/cmd_test.go (about) 1 package store 2 3 import ( 4 "testing" 5 6 "github.com/elves/elvish/store/storedefs" 7 ) 8 9 var ( 10 cmds = []string{"echo foo", "put bar", "put lorem", "echo bar"} 11 searches = []struct { 12 next bool 13 seq int 14 prefix string 15 wantedSeq int 16 wantedCmd string 17 wantedErr error 18 }{ 19 {false, 5, "echo", 4, "echo bar", nil}, 20 {false, 5, "put", 3, "put lorem", nil}, 21 {false, 4, "echo", 1, "echo foo", nil}, 22 {false, 3, "f", 0, "", storedefs.ErrNoMatchingCmd}, 23 24 {true, 1, "echo", 1, "echo foo", nil}, 25 {true, 1, "put", 2, "put bar", nil}, 26 {true, 2, "echo", 4, "echo bar", nil}, 27 {true, 4, "put", 0, "", storedefs.ErrNoMatchingCmd}, 28 } 29 ) 30 31 func TestCmd(t *testing.T) { 32 startSeq, err := tStore.NextCmdSeq() 33 if startSeq != 1 || err != nil { 34 t.Errorf("tStore.NextCmdSeq() => (%v, %v), want (1, nil)", 35 startSeq, err) 36 } 37 for i, cmd := range cmds { 38 wantSeq := startSeq + i 39 seq, err := tStore.AddCmd(cmd) 40 if seq != wantSeq || err != nil { 41 t.Errorf("tStore.AddCmd(%v) => (%v, %v), want (%v, nil)", 42 cmd, seq, err, wantSeq) 43 } 44 } 45 endSeq, err := tStore.NextCmdSeq() 46 wantedEndSeq := startSeq + len(cmds) 47 if endSeq != wantedEndSeq || err != nil { 48 t.Errorf("tStore.NextCmdSeq() => (%v, %v), want (%v, nil)", 49 endSeq, err, wantedEndSeq) 50 } 51 for i, wantedCmd := range cmds { 52 seq := i + startSeq 53 cmd, err := tStore.Cmd(seq) 54 if cmd != wantedCmd || err != nil { 55 t.Errorf("tStore.Cmd(%v) => (%v, %v), want (%v, nil)", 56 seq, cmd, err, wantedCmd) 57 } 58 } 59 for _, tt := range searches { 60 f := tStore.PrevCmd 61 funcname := "tStore.PrevCmd" 62 if tt.next { 63 f = tStore.NextCmd 64 funcname = "tStore.NextCmd" 65 } 66 seq, cmd, err := f(tt.seq, tt.prefix) 67 if seq != tt.wantedSeq || cmd != tt.wantedCmd || err != tt.wantedErr { 68 t.Errorf("%s(%v, %v) => (%v, %v), want (%v, %v)", 69 funcname, tt.seq, tt.prefix, 70 seq, cmd, err, 71 tt.wantedSeq, tt.wantedCmd, tt.wantedErr) 72 } 73 } 74 }