package goridge
import (
"bytes"
"github.com/stretchr/testify/assert"
"testing"
)
func TestNewPrefix(t *testing.T) {
p1 := NewPrefix()
assert.Equal(t, byte(0), p1.Flags())
assert.Equal(t, uint64(0), p1.Size())
}
func TestPrefix_WithFlag(t *testing.T) {
p1 := NewPrefix()
p2 := p1.WithFlag(PayloadRaw)
assert.False(t, p1.HasFlag(PayloadRaw))
assert.True(t, p2.HasFlag(PayloadRaw))
p3 := p2.WithFlag(PayloadEmpty)
assert.True(t, p3.HasFlag(PayloadRaw))
assert.True(t, p3.HasFlag(PayloadEmpty))
}
func TestPrefix_WithFlags(t *testing.T) {
p1 := NewPrefix().WithFlag(PayloadRaw)
p2 := p1.WithFlags(PayloadEmpty)
assert.False(t, p2.HasFlag(PayloadRaw))
assert.True(t, p2.HasFlag(PayloadEmpty))
}
func TestPrefix_WithSize(t *testing.T) {
p1 := NewPrefix().WithFlag(PayloadRaw)
p2 := p1.WithSize(1000)
assert.True(t, p1.HasFlag(PayloadRaw))
assert.Equal(t, uint64(0), p1.Size())
assert.True(t, p2.HasFlag(PayloadRaw))
assert.Equal(t, uint64(1000), p2.Size())
}
func TestPrefix_HasPayload(t *testing.T) {
p1 := NewPrefix().WithFlag(PayloadRaw)
p2 := p1.WithSize(1000)
assert.False(t, p1.HasPayload())
assert.True(t, p2.HasPayload())
p3 := p2.WithFlag(PayloadEmpty)
assert.False(t, p3.HasPayload())
}
func TestReadPrefix(t *testing.T) {
buffer := bytes.NewBuffer([]byte{PayloadRaw | PayloadControl, 255, 0, 0, 0, 255, 0, 0, 0})
p1 := NewPrefix()
buffer.Read(p1[:])
assert.True(t, p1.HasFlag(PayloadRaw))
assert.True(t, p1.HasFlag(PayloadControl))
assert.Equal(t, uint64(1095216660735), p1.Size())
}
|