1111import java .util .zip .Inflater ;
1212import org .java_websocket .exceptions .InvalidDataException ;
1313import org .java_websocket .extensions .permessage_deflate .PerMessageDeflateExtension ;
14+ import org .java_websocket .framing .BinaryFrame ;
1415import org .java_websocket .framing .ContinuousFrame ;
1516import org .java_websocket .framing .TextFrame ;
1617import org .junit .Test ;
@@ -20,6 +21,7 @@ public class PerMessageDeflateExtensionTest {
2021 @ Test
2122 public void testDecodeFrame () throws InvalidDataException {
2223 PerMessageDeflateExtension deflateExtension = new PerMessageDeflateExtension ();
24+ deflateExtension .setThreshold (0 );
2325 String str = "This is a highly compressable text"
2426 + "This is a highly compressable text"
2527 + "This is a highly compressable text"
@@ -29,13 +31,30 @@ public void testDecodeFrame() throws InvalidDataException {
2931 TextFrame frame = new TextFrame ();
3032 frame .setPayload (ByteBuffer .wrap (message ));
3133 deflateExtension .encodeFrame (frame );
34+ assertTrue (frame .isRSV1 ());
3235 deflateExtension .decodeFrame (frame );
3336 assertArrayEquals (message , frame .getPayloadData ().array ());
3437 }
38+ @ Test
39+ public void testDecodeFrameIfRSVIsNotSet () throws InvalidDataException {
40+ PerMessageDeflateExtension deflateExtension = new PerMessageDeflateExtension ();
41+ String str = "This is a highly compressable text"
42+ + "This is a highly compressable text"
43+ + "This is a highly compressable text"
44+ + "This is a highly compressable text"
45+ + "This is a highly compressable text" ;
46+ byte [] message = str .getBytes ();
47+ TextFrame frame = new TextFrame ();
48+ frame .setPayload (ByteBuffer .wrap (message ));
49+ deflateExtension .decodeFrame (frame );
50+ assertArrayEquals (message , frame .getPayloadData ().array ());
51+ assertFalse (frame .isRSV1 ());
52+ }
3553
3654 @ Test
3755 public void testEncodeFrame () {
3856 PerMessageDeflateExtension deflateExtension = new PerMessageDeflateExtension ();
57+ deflateExtension .setThreshold (0 );
3958 String str = "This is a highly compressable text"
4059 + "This is a highly compressable text"
4160 + "This is a highly compressable text"
@@ -47,6 +66,25 @@ public void testEncodeFrame() {
4766 deflateExtension .encodeFrame (frame );
4867 assertTrue (message .length > frame .getPayloadData ().array ().length );
4968 }
69+ @ Test
70+ public void testEncodeFrameBelowThreshold () {
71+ PerMessageDeflateExtension deflateExtension = new PerMessageDeflateExtension ();
72+ deflateExtension .setThreshold (11 );
73+ String str = "Hello World" ;
74+ byte [] message = str .getBytes ();
75+ TextFrame frame = new TextFrame ();
76+ frame .setPayload (ByteBuffer .wrap (message ));
77+ deflateExtension .encodeFrame (frame );
78+ // Message length is equal to the threshold --> encode
79+ assertTrue (frame .isRSV1 ());
80+ str = "Hello Worl" ;
81+ message = str .getBytes ();
82+ frame = new TextFrame ();
83+ frame .setPayload (ByteBuffer .wrap (message ));
84+ deflateExtension .encodeFrame (frame );
85+ // Message length is below to the threshold --> do NOT encode
86+ assertFalse (frame .isRSV1 ());
87+ }
5088
5189 @ Test
5290 public void testAcceptProvidedExtensionAsServer () {
@@ -72,9 +110,8 @@ public void testIsFrameValid() {
72110 TextFrame frame = new TextFrame ();
73111 try {
74112 deflateExtension .isFrameValid (frame );
75- fail ("Frame not valid. RSV1 must be set." );
76113 } catch (Exception e ) {
77- //
114+ fail ( "RSV1 is optional and should therefore not fail" );
78115 }
79116 frame .setRSV1 (true );
80117 try {
0 commit comments