11package datadog .communication .serialization .msgpack ;
22
33import static datadog .trace .util .stacktrace .StackTraceEvent .DEFAULT_LANGUAGE ;
4+ import static java .nio .charset .StandardCharsets .UTF_8 ;
45import static org .junit .jupiter .api .Assertions .assertArrayEquals ;
56import static org .junit .jupiter .api .Assertions .assertEquals ;
67import static org .junit .jupiter .api .Assertions .assertFalse ;
1920import java .math .BigDecimal ;
2021import java .nio .ByteBuffer ;
2122import java .nio .CharBuffer ;
22- import java .nio .charset .StandardCharsets ;
2323import java .util .ArrayList ;
2424import java .util .Arrays ;
2525import java .util .Collections ;
3333import org .msgpack .core .MessageUnpacker ;
3434
3535public class MsgPackWriterTest {
36+ private static final String NON_ASCII_STRING = "foobár" ;
37+ private static final byte [] NON_ASCII_BYTES = NON_ASCII_STRING .getBytes (UTF_8 );
38+ private static final int NON_ASCII_BUFFER_CAPACITY = NON_ASCII_BYTES .length + 4 ;
3639
3740 @ Test
3841 public void testOverflow () {
@@ -141,13 +144,12 @@ public void testWriteBinaryNoArgVariant() {
141144 MessageUnpacker unpacker = MessagePack .newDefaultUnpacker (buffer );
142145 try {
143146 assertEquals (unpacker .unpackBinaryHeader (), 6 );
144- assertArrayEquals (
145- unpacker .readPayload (6 ), "foobar" .getBytes (StandardCharsets .UTF_8 ));
147+ assertArrayEquals (unpacker .readPayload (6 ), "foobar" .getBytes (UTF_8 ));
146148 } catch (IOException e ) {
147149 Assertions .fail (e .getMessage ());
148150 }
149151 }));
150- writer .writeBinary ("foobar" .getBytes (StandardCharsets . UTF_8 ));
152+ writer .writeBinary ("foobar" .getBytes (UTF_8 ));
151153 }
152154
153155 @ Test
@@ -628,16 +630,17 @@ public void testWriteObjectArray() {
628630
629631 @ Test
630632 public void testWriteStringUTF8BytesString () {
631- UTF8BytesString value = UTF8BytesString .create ("foobár" );
633+ UTF8BytesString value = UTF8BytesString .create (NON_ASCII_STRING );
634+ int encodedLength = value .encodedLength ();
632635 MsgPackWriter writer =
633636 new MsgPackWriter (
634637 newBuffer (
635- 20 ,
638+ ( encodedLength + 4 ) * 2 ,
636639 (messageCount , buffer ) -> {
637640 MessageUnpacker unpacker = MessagePack .newDefaultUnpacker (buffer );
638641 try {
639- assertEquals (unpacker .unpackString (), "foobár" );
640- assertEquals (unpacker .unpackString (), "foobár" );
642+ assertEquals (unpacker .unpackString (), NON_ASCII_STRING );
643+ assertEquals (unpacker .unpackString (), NON_ASCII_STRING );
641644 } catch (IOException e ) {
642645 Assertions .fail (e .getMessage ());
643646 }
@@ -671,7 +674,7 @@ public void testWriteObjectStringGeneralPath() {
671674 new Object () {
672675 @ Override
673676 public String toString () {
674- return "foobár" ;
677+ return NON_ASCII_STRING ;
675678 }
676679 };
677680 MsgPackWriter writer =
@@ -681,31 +684,31 @@ public String toString() {
681684 (messageCount , buffer ) -> {
682685 MessageUnpacker unpacker = MessagePack .newDefaultUnpacker (buffer );
683686 try {
684- assertEquals (unpacker .unpackString (), "foobár" );
687+ assertEquals (unpacker .unpackString (), NON_ASCII_STRING );
685688 assertEquals (unpacker .unpackString (), "foobàr" );
686689 } catch (IOException e ) {
687690 Assertions .fail (e .getMessage ());
688691 }
689692 }));
690693 writer .writeObjectString (value , null );
691- writer .writeObjectString (value , s -> "foobàr" .getBytes (StandardCharsets . UTF_8 ));
694+ writer .writeObjectString (value , s -> "foobàr" .getBytes (UTF_8 ));
692695 }
693696
694697 @ Test
695698 public void testWriteStringGeneralCharSequence () {
696699 MsgPackWriter writer =
697700 new MsgPackWriter (
698701 newBuffer (
699- 10 ,
702+ NON_ASCII_BUFFER_CAPACITY ,
700703 (messageCount , buffer ) -> {
701704 MessageUnpacker unpacker = MessagePack .newDefaultUnpacker (buffer );
702705 try {
703- assertEquals (unpacker .unpackString (), "foobár" );
706+ assertEquals (unpacker .unpackString (), NON_ASCII_STRING );
704707 } catch (IOException e ) {
705708 Assertions .fail (e .getMessage ());
706709 }
707710 }));
708- CharBuffer charSeq = CharBuffer .wrap ("foobár" );
711+ CharBuffer charSeq = CharBuffer .wrap (NON_ASCII_STRING );
709712 writer .writeString (charSeq , null );
710713 }
711714
@@ -714,16 +717,16 @@ public void testWriteStringEncodingCache() {
714717 MsgPackWriter writer =
715718 new MsgPackWriter (
716719 newBuffer (
717- 10 ,
720+ NON_ASCII_BUFFER_CAPACITY ,
718721 (messageCount , buffer ) -> {
719722 MessageUnpacker unpacker = MessagePack .newDefaultUnpacker (buffer );
720723 try {
721- assertEquals (unpacker .unpackString (), "foobár" );
724+ assertEquals (unpacker .unpackString (), NON_ASCII_STRING );
722725 } catch (IOException e ) {
723726 Assertions .fail (e .getMessage ());
724727 }
725728 }));
726- writer .writeString ("" , s -> "foobár" . getBytes ( StandardCharsets . UTF_8 ) );
729+ writer .writeString ("" , s -> NON_ASCII_BYTES );
727730 }
728731
729732 @ Test
0 commit comments