more unit tests

This commit is contained in:
evilsocket 2018-04-26 15:16:49 +02:00
parent 5a60e8897e
commit 735d074cd8
No known key found for this signature in database
GPG key ID: 1564D7F30393A456
3 changed files with 73 additions and 15 deletions

View file

@ -0,0 +1,57 @@
package session
import (
"testing"
)
func sameStrings(a []string, b []string) bool {
if len(a) != len(b) {
return false
}
for i, v := range a {
if v != b[i] {
return false
}
}
return true
}
func assertPanic(t *testing.T, msg string, f func()) {
defer func() {
if r := recover(); r == nil {
t.Fatal(msg)
}
}()
f()
}
func TestSessionCommandHandler(t *testing.T) {
var units = []struct {
expr string
panic bool
parsed []string
}{
{"notvali(d", true, nil},
{`simple\s+(\d+)`, false, []string{"123"}},
}
for _, u := range units {
if u.panic {
assertPanic(t, "", func() {
_ = NewCommandHandler("", u.expr, "", nil)
})
} else {
c := NewCommandHandler("", u.expr, "", nil)
shouldNotParse := "simple123"
shouldParse := "simple 123"
if parsed, parts := c.Parse(shouldNotParse); parsed {
t.Fatalf("should not parse '%s'", shouldNotParse)
} else if parsed, parts = c.Parse(shouldParse); !parsed {
t.Fatalf("should parse '%s'", shouldParse)
} else if !sameStrings(parts, u.parsed) {
t.Fatalf("expected '%v', got '%v'", u.parsed, parts)
}
}
}
}

View file

@ -15,20 +15,16 @@ type SetCallback func(newValue string)
type Environment struct {
sync.Mutex
Padding int `json:"-"`
Data map[string]string `json:"data"`
Data map[string]string `json:"data"`
cbs map[string]SetCallback
sess *Session
}
func NewEnvironment(s *Session, envFile string) *Environment {
env := &Environment{
Padding: 0,
Data: make(map[string]string),
sess: s,
cbs: make(map[string]SetCallback),
Data: make(map[string]string),
sess: s,
cbs: make(map[string]SetCallback),
}
if envFile != "" {
@ -101,11 +97,6 @@ func (env *Environment) Set(name, value string) string {
env.sess.Events.Log(core.DEBUG, "env.change: %s -> '%s'", name, value)
width := len(name)
if width > env.Padding {
env.Padding = width
}
return old
}

View file

@ -161,7 +161,17 @@ func (s *Session) getHandler(args []string, sess *Session) error {
fmt.Println()
last := len(key) - 1
prefix := key[:last]
for _, k := range s.Env.Sorted() {
sortedKeys := s.Env.Sorted()
padding := 0
for _, k := range sortedKeys {
l := len(k)
if l > padding {
padding = l
}
}
for _, k := range sortedKeys {
if strings.HasPrefix(k, prefix) {
ns := ""
toks := strings.Split(k, ".")
@ -174,7 +184,7 @@ func (s *Session) getHandler(args []string, sess *Session) error {
prev_ns = ns
}
fmt.Printf(" %"+strconv.Itoa(s.Env.Padding)+"s: '%s'\n", k, s.Env.Data[k])
fmt.Printf(" %"+strconv.Itoa(padding)+"s: '%s'\n", k, s.Env.Data[k])
}
}
fmt.Println()