You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package server
|
|
|
|
import (
|
|
"testing"
|
|
|
|
internalunpacker "git.noahlan.cn/noahlan/nnet/v2/internal/unpacker"
|
|
unpackerpkg "git.noahlan.cn/noahlan/nnet/v2/pkg/unpacker"
|
|
)
|
|
|
|
func TestProcessDataWithUnpackerConsumesIncompleteInput(t *testing.T) {
|
|
unpacker := internalunpacker.NewLengthFieldUnpacker(unpackerpkg.LengthFieldUnpacker{
|
|
LengthFieldOffset: 0,
|
|
LengthFieldLength: 1,
|
|
LengthAdjustment: 0,
|
|
InitialBytesToStrip: 0,
|
|
})
|
|
|
|
messages, consumed, hasRemaining, err := processDataWithUnpacker([]byte{3, 'a'}, unpacker)
|
|
if err != nil {
|
|
t.Fatalf("processDataWithUnpacker error: %v", err)
|
|
}
|
|
if len(messages) != 0 {
|
|
t.Fatalf("messages=%d, want 0", len(messages))
|
|
}
|
|
if consumed != 2 {
|
|
t.Fatalf("consumed=%d, want 2", consumed)
|
|
}
|
|
if !hasRemaining {
|
|
t.Fatal("hasRemaining=false, want true")
|
|
}
|
|
|
|
messages, consumed, hasRemaining, err = processDataWithUnpacker([]byte{'b', 'c'}, unpacker)
|
|
if err != nil {
|
|
t.Fatalf("processDataWithUnpacker second error: %v", err)
|
|
}
|
|
if consumed != 2 {
|
|
t.Fatalf("second consumed=%d, want 2", consumed)
|
|
}
|
|
if hasRemaining {
|
|
t.Fatal("second hasRemaining=true, want false")
|
|
}
|
|
if len(messages) != 1 {
|
|
t.Fatalf("second messages=%d, want 1", len(messages))
|
|
}
|
|
if string(messages[0]) != "\x03abc" {
|
|
t.Fatalf("message=%q, want %q", string(messages[0]), "\x03abc")
|
|
}
|
|
}
|