11 type nopCloser struct{ io.Writer }
13 func (nopCloser) Close() error { return nil }
15 func TestTruncWriter(t *testing.T) {
16 const data = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijlkmnopqrstuvwxyz987654321"
17 for n := 1; n <= 10; n++ {
19 w := &truncWriter{w: nopCloser{&b}}
29 if b.String() != data[:len(data)-len(w.p)] {
30 t.Errorf("%d: %q", n, b.String())
35 func textMessages(num int) [][]byte {
36 messages := make([][]byte, num)
37 for i := 0; i < num; i++ {
38 msg := fmt.Sprintf("planet: %d, country: %d, city: %d, street: %d", i, i, i, i)
39 messages[i] = []byte(msg)
44 func BenchmarkWriteNoCompression(b *testing.B) {
46 c := newTestConn(nil, w, false)
47 messages := textMessages(100)
49 for i := 0; i < b.N; i++ {
50 c.WriteMessage(TextMessage, messages[i%len(messages)])
55 func BenchmarkWriteWithCompression(b *testing.B) {
57 c := newTestConn(nil, w, false)
58 messages := textMessages(100)
59 c.enableWriteCompression = true
60 c.newCompressionWriter = compressNoContextTakeover
62 for i := 0; i < b.N; i++ {
63 c.WriteMessage(TextMessage, messages[i%len(messages)])
68 func TestValidCompressionLevel(t *testing.T) {
69 c := newTestConn(nil, nil, false)
70 for _, level := range []int{minCompressionLevel - 1, maxCompressionLevel + 1} {
71 if err := c.SetCompressionLevel(level); err == nil {
72 t.Errorf("no error for level %d", level)
75 for _, level := range []int{minCompressionLevel, maxCompressionLevel} {
76 if err := c.SetCompressionLevel(level); err != nil {
77 t.Errorf("error for level %d", level)