mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-19 23:14:55 +02:00
More work on dnd kitten
This commit is contained in:
@@ -192,16 +192,16 @@ func (s *StreamingBase64Encoder) Encode(input []byte, output []byte) iter.Seq2[[
|
||||
|
||||
// Finish encoding the stream. Resets the encoder. Returned slice can be nil
|
||||
// if no leftover bytes are present.
|
||||
func (s *StreamingBase64Encoder) Finish() ([]byte, error) {
|
||||
func (s *StreamingBase64Encoder) Finish() []byte {
|
||||
defer func() {
|
||||
s.num_leftover = 0
|
||||
s.total_read = 0
|
||||
}()
|
||||
if s.num_leftover == 0 {
|
||||
return nil, nil
|
||||
return nil
|
||||
}
|
||||
encodedLen := base64.RawStdEncoding.EncodedLen(s.num_leftover)
|
||||
output := make([]byte, encodedLen)
|
||||
base64.RawStdEncoding.Encode(output, s.leftover[:s.num_leftover])
|
||||
return output, nil
|
||||
output := [4]byte{}
|
||||
base64.RawStdEncoding.Encode(output[:encodedLen], s.leftover[:s.num_leftover])
|
||||
return output[:encodedLen]
|
||||
}
|
||||
|
||||
@@ -403,10 +403,7 @@ func encodeRoundtrip(t *testing.T, plaintext []byte, chunkSize int) {
|
||||
if err != nil {
|
||||
t.Fatalf("chunkSize=%d: unexpected Encode error: %v", chunkSize, err)
|
||||
}
|
||||
tail, err := e.Finish()
|
||||
if err != nil {
|
||||
t.Fatalf("chunkSize=%d: unexpected Finish error: %v", chunkSize, err)
|
||||
}
|
||||
tail := e.Finish()
|
||||
got = append(got, tail...)
|
||||
|
||||
want := []byte(base64.RawStdEncoding.EncodeToString(plaintext))
|
||||
@@ -445,9 +442,9 @@ func TestEncoderFinishLeftover(t *testing.T) {
|
||||
// num_leftover=0: empty encoder, Finish must return (nil, nil).
|
||||
t.Run("leftover=0", func(t *testing.T) {
|
||||
var e StreamingBase64Encoder
|
||||
out, err := e.Finish()
|
||||
if err != nil || out != nil {
|
||||
t.Fatalf("expected (nil,nil), got (%v,%v)", out, err)
|
||||
out := e.Finish()
|
||||
if out != nil {
|
||||
t.Fatalf("expected (nil,nil), got (%v)", out)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -461,9 +458,9 @@ func TestEncoderFinishLeftover(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
out, err := e.Finish()
|
||||
if err != nil || out != nil {
|
||||
t.Fatalf("expected (nil,nil), got (%v,%v)", out, err)
|
||||
out := e.Finish()
|
||||
if out != nil {
|
||||
t.Fatalf("expected (nil,nil), got (%v)", out)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -477,10 +474,7 @@ func TestEncoderFinishLeftover(t *testing.T) {
|
||||
t.Fatalf("unexpected Encode error: %v", err)
|
||||
}
|
||||
}
|
||||
tail, err := e.Finish()
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected Finish error: %v", err)
|
||||
}
|
||||
tail := e.Finish()
|
||||
want := []byte(base64.RawStdEncoding.EncodeToString([]byte("d")))
|
||||
if !bytes.Equal(tail, want) {
|
||||
t.Fatalf("want %q, got %q", want, tail)
|
||||
@@ -497,10 +491,7 @@ func TestEncoderFinishLeftover(t *testing.T) {
|
||||
t.Fatalf("unexpected Encode error: %v", err)
|
||||
}
|
||||
}
|
||||
tail, err := e.Finish()
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected Finish error: %v", err)
|
||||
}
|
||||
tail := e.Finish()
|
||||
want := []byte(base64.RawStdEncoding.EncodeToString([]byte("de")))
|
||||
if !bytes.Equal(tail, want) {
|
||||
t.Fatalf("want %q, got %q", want, tail)
|
||||
@@ -536,9 +527,9 @@ func TestEncoderEmptyInput(t *testing.T) {
|
||||
t.Fatalf("unexpected error on empty input: %v", err)
|
||||
}
|
||||
}
|
||||
out, err := e.Finish()
|
||||
if err != nil || out != nil {
|
||||
t.Fatalf("expected (nil,nil) for empty input, got (%v,%v)", out, err)
|
||||
out := e.Finish()
|
||||
if out != nil {
|
||||
t.Fatalf("expected (nil,nil) for empty input, got (%v)", out)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -576,10 +567,7 @@ func TestEncoderNumLeftoverInEncode(t *testing.T) {
|
||||
t.Fatalf("firstCallLen=%d rest Encode error: %v", firstCallLen, err)
|
||||
}
|
||||
got = append(got, rest...)
|
||||
tail, err := e.Finish()
|
||||
if err != nil {
|
||||
t.Fatalf("firstCallLen=%d Finish error: %v", firstCallLen, err)
|
||||
}
|
||||
tail := e.Finish()
|
||||
got = append(got, tail...)
|
||||
|
||||
want := []byte(base64.RawStdEncoding.EncodeToString(plain))
|
||||
@@ -603,10 +591,7 @@ func TestEncoderFinishResetsState(t *testing.T) {
|
||||
}
|
||||
got1 = append(got1, enc...)
|
||||
}
|
||||
tail1, err := e.Finish()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
tail1 := e.Finish()
|
||||
got1 = append(got1, tail1...)
|
||||
want1 := []byte(base64.RawStdEncoding.EncodeToString(plain1))
|
||||
if !bytes.Equal(got1, want1) {
|
||||
@@ -622,10 +607,7 @@ func TestEncoderFinishResetsState(t *testing.T) {
|
||||
}
|
||||
got2 = append(got2, enc...)
|
||||
}
|
||||
tail2, err := e.Finish()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
tail2 := e.Finish()
|
||||
got2 = append(got2, tail2...)
|
||||
want2 := []byte(base64.RawStdEncoding.EncodeToString(plain2))
|
||||
if !bytes.Equal(got2, want2) {
|
||||
@@ -684,10 +666,7 @@ func TestEncoderDecoderRoundtrip(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("Encode error: %v", err)
|
||||
}
|
||||
tail, err := e.Finish()
|
||||
if err != nil {
|
||||
t.Fatalf("Encode Finish error: %v", err)
|
||||
}
|
||||
tail := e.Finish()
|
||||
encoded = append(encoded, tail...)
|
||||
|
||||
// Decode using RawStdEncoding (no padding)
|
||||
|
||||
Reference in New Issue
Block a user