github.com/rita33cool1/iot-system-gateway@v0.0.0-20200911033302-e65bde238cc5/docker-engine/pkg/term/proxy_test.go (about) 1 package term // import "github.com/docker/docker/pkg/term" 2 3 import ( 4 "bytes" 5 "fmt" 6 "testing" 7 8 "github.com/gotestyourself/gotestyourself/assert" 9 is "github.com/gotestyourself/gotestyourself/assert/cmp" 10 ) 11 12 func TestEscapeProxyRead(t *testing.T) { 13 escapeKeys, _ := ToBytes("DEL") 14 keys, _ := ToBytes("a,b,c,+") 15 reader := NewEscapeProxy(bytes.NewReader(keys), escapeKeys) 16 buf := make([]byte, len(keys)) 17 nr, err := reader.Read(buf) 18 assert.NilError(t, err) 19 assert.Equal(t, nr, len(keys), fmt.Sprintf("nr %d should be equal to the number of %d", nr, len(keys))) 20 assert.DeepEqual(t, keys, buf) 21 22 keys, _ = ToBytes("") 23 reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) 24 buf = make([]byte, len(keys)) 25 nr, err = reader.Read(buf) 26 assert.Assert(t, is.ErrorContains(err, ""), "Should throw error when no keys are to read") 27 assert.Equal(t, nr, 0, "nr should be zero") 28 assert.Check(t, is.Len(keys, 0)) 29 assert.Check(t, is.Len(buf, 0)) 30 31 escapeKeys, _ = ToBytes("ctrl-x,ctrl-@") 32 keys, _ = ToBytes("DEL") 33 reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) 34 buf = make([]byte, len(keys)) 35 nr, err = reader.Read(buf) 36 assert.NilError(t, err) 37 assert.Equal(t, nr, 1, fmt.Sprintf("nr %d should be equal to the number of 1", nr)) 38 assert.DeepEqual(t, keys, buf) 39 40 escapeKeys, _ = ToBytes("ctrl-c") 41 keys, _ = ToBytes("ctrl-c") 42 reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) 43 buf = make([]byte, len(keys)) 44 nr, err = reader.Read(buf) 45 assert.Error(t, err, "read escape sequence") 46 assert.Equal(t, nr, 0, "nr should be equal to 0") 47 assert.DeepEqual(t, keys, buf) 48 49 escapeKeys, _ = ToBytes("ctrl-c,ctrl-z") 50 keys, _ = ToBytes("ctrl-c,ctrl-z") 51 reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) 52 buf = make([]byte, 1) 53 nr, err = reader.Read(buf) 54 assert.NilError(t, err) 55 assert.Equal(t, nr, 0, "nr should be equal to 0") 56 assert.DeepEqual(t, keys[0:1], buf) 57 nr, err = reader.Read(buf) 58 assert.Error(t, err, "read escape sequence") 59 assert.Equal(t, nr, 0, "nr should be equal to 0") 60 assert.DeepEqual(t, keys[1:], buf) 61 62 escapeKeys, _ = ToBytes("ctrl-c,ctrl-z") 63 keys, _ = ToBytes("ctrl-c,DEL,+") 64 reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) 65 buf = make([]byte, 1) 66 nr, err = reader.Read(buf) 67 assert.NilError(t, err) 68 assert.Equal(t, nr, 0, "nr should be equal to 0") 69 assert.DeepEqual(t, keys[0:1], buf) 70 buf = make([]byte, len(keys)) 71 nr, err = reader.Read(buf) 72 assert.NilError(t, err) 73 assert.Equal(t, nr, len(keys), fmt.Sprintf("nr should be equal to %d", len(keys))) 74 assert.DeepEqual(t, keys, buf) 75 76 escapeKeys, _ = ToBytes("ctrl-c,ctrl-z") 77 keys, _ = ToBytes("ctrl-c,DEL") 78 reader = NewEscapeProxy(bytes.NewReader(keys), escapeKeys) 79 buf = make([]byte, 1) 80 nr, err = reader.Read(buf) 81 assert.NilError(t, err) 82 assert.Equal(t, nr, 0, "nr should be equal to 0") 83 assert.DeepEqual(t, keys[0:1], buf) 84 buf = make([]byte, len(keys)) 85 nr, err = reader.Read(buf) 86 assert.NilError(t, err) 87 assert.Equal(t, nr, len(keys), fmt.Sprintf("nr should be equal to %d", len(keys))) 88 assert.DeepEqual(t, keys, buf) 89 }