@@ -1847,3 +1847,30 @@ func TestBuilderNameCompressionWithNonZeroedName(t *testing.T) {
1847
1847
t .Fatalf ("b.Finish() = %v, want: %v" , msg , expect )
1848
1848
}
1849
1849
}
1850
+
1851
+ func TestBuilderCompressionInAppendMode (t * testing.T ) {
1852
+ maxPtr := int (^ uint16 (0 ) >> 2 )
1853
+ b := NewBuilder (make ([]byte , maxPtr , maxPtr + 512 ), Header {})
1854
+ b .EnableCompression ()
1855
+ if err := b .StartQuestions (); err != nil {
1856
+ t .Fatalf ("b.StartQuestions() unexpected error: %v" , err )
1857
+ }
1858
+ if err := b .Question (Question {Name : MustNewName ("go.dev." )}); err != nil {
1859
+ t .Fatalf ("b.Question() unexpected error: %v" , err )
1860
+ }
1861
+ if err := b .Question (Question {Name : MustNewName ("go.dev." )}); err != nil {
1862
+ t .Fatalf ("b.Question() unexpected error: %v" , err )
1863
+ }
1864
+ msg , err := b .Finish ()
1865
+ if err != nil {
1866
+ t .Fatalf ("b.Finish() unexpected error: %v" , err )
1867
+ }
1868
+ expect := []byte {
1869
+ 0 , 0 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , // header
1870
+ 2 , 'g' , 'o' , 3 , 'd' , 'e' , 'v' , 0 , 0 , 0 , 0 , 0 , // question 1
1871
+ 0xC0 , 12 , 0 , 0 , 0 , 0 , // question 2
1872
+ }
1873
+ if ! bytes .Equal (msg [maxPtr :], expect ) {
1874
+ t .Fatalf ("msg[maxPtr:] = %v, want: %v" , msg [maxPtr :], expect )
1875
+ }
1876
+ }
0 commit comments