mirror of https://github.com/ceph/go-ceph
71 lines
1.3 KiB
Go
71 lines
1.3 KiB
Go
|
package cutil
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
var tbl = []struct {
|
||
|
val []byte
|
||
|
res1 []string
|
||
|
res2 []string
|
||
|
}{
|
||
|
// simple inputs
|
||
|
{
|
||
|
val: []byte("foo\x00bar\x00baz\x00"),
|
||
|
res1: []string{"foo", "bar", "baz"},
|
||
|
res2: []string{"foo", "bar", "baz"},
|
||
|
},
|
||
|
// no trailing null bytes
|
||
|
{
|
||
|
val: []byte("meow mix"),
|
||
|
res1: []string{"meow mix"},
|
||
|
res2: []string{"meow mix"},
|
||
|
},
|
||
|
// one item
|
||
|
{
|
||
|
val: []byte("fancy feast\x00"),
|
||
|
res1: []string{"fancy feast"},
|
||
|
res2: []string{"fancy feast"},
|
||
|
},
|
||
|
// nuttin dare
|
||
|
{
|
||
|
val: []byte(""),
|
||
|
res1: []string{},
|
||
|
res2: []string{},
|
||
|
},
|
||
|
// almost nuttin
|
||
|
{
|
||
|
val: []byte("\x00"),
|
||
|
res1: []string{},
|
||
|
res2: []string{},
|
||
|
},
|
||
|
// how multiple adjacent nulls are handled
|
||
|
{
|
||
|
val: []byte("kibbles\x00\x00and\x00bits"),
|
||
|
res1: []string{"kibbles", "and", "bits"},
|
||
|
res2: []string{"kibbles", "", "and", "bits"},
|
||
|
},
|
||
|
{
|
||
|
val: []byte("dinki\x00\x00\x00di\x00\x00"),
|
||
|
res1: []string{"dinki", "di"},
|
||
|
res2: []string{"dinki", "", "", "di", ""},
|
||
|
},
|
||
|
// starting with a null
|
||
|
{
|
||
|
val: []byte("\x00caesar\x00"),
|
||
|
res1: []string{"caesar"},
|
||
|
res2: []string{"", "caesar"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
func TestSplitBufStrings(t *testing.T) {
|
||
|
for _, x := range tbl {
|
||
|
assert.Equal(t, x.res1, SplitSparseBuffer(x.val))
|
||
|
}
|
||
|
for _, x := range tbl {
|
||
|
assert.Equal(t, x.res2, SplitBuffer(x.val))
|
||
|
}
|
||
|
}
|