1 // Copyright 2017 The Gorilla WebSocket Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
14 var preparedMessageTests = []struct {
17 enableWriteCompression bool
21 {TextMessage, true, false, flate.BestSpeed},
22 {TextMessage, true, true, flate.BestSpeed},
23 {TextMessage, true, true, flate.BestCompression},
24 {PingMessage, true, false, flate.BestSpeed},
25 {PingMessage, true, true, flate.BestSpeed},
28 {TextMessage, false, false, flate.BestSpeed},
29 {TextMessage, false, true, flate.BestSpeed},
30 {TextMessage, false, true, flate.BestCompression},
31 {PingMessage, false, false, flate.BestSpeed},
32 {PingMessage, false, true, flate.BestSpeed},
35 func TestPreparedMessage(t *testing.T) {
36 for _, tt := range preparedMessageTests {
37 var data = []byte("this is a test")
39 c := newTestConn(nil, &buf, tt.isServer)
40 if tt.enableWriteCompression {
41 c.newCompressionWriter = compressNoContextTakeover
43 c.SetCompressionLevel(tt.compressionLevel)
45 // Seed random number generator for consistent frame mask.
48 if err := c.WriteMessage(tt.messageType, data); err != nil {
53 pm, err := NewPreparedMessage(tt.messageType, data)
58 // Scribble on data to ensure that NewPreparedMessage takes a snapshot.
59 copy(data, "hello world")
61 // Seed random number generator for consistent frame mask.
65 if err := c.WritePreparedMessage(pm); err != nil {
71 t.Errorf("write message != prepared message for %+v", tt)