go-ceph/internal/cutil/command_output_test.go

57 lines
1.4 KiB
Go

package cutil
import (
"testing"
"unsafe"
"github.com/stretchr/testify/assert"
)
func TestCommandOutput(t *testing.T) {
t.Run("newAndFree", func(t *testing.T) {
co := NewCommandOutput()
assert.NotNil(t, co)
co.Free()
})
t.Run("setValues", func(t *testing.T) {
co := NewCommandOutput()
assert.NotNil(t, co)
defer co.Free()
testSetString(co.OutBuf(), co.OutBufLen(), "i got style")
testSetString(co.Outs(), co.OutsLen(), "i got rhythm")
b, s := co.GoValues()
assert.EqualValues(t, []byte("i got style"), b)
assert.EqualValues(t, "i got rhythm", s)
})
t.Run("setOnlyOutBuf", func(t *testing.T) {
co := NewCommandOutput()
assert.NotNil(t, co)
defer co.Free()
testSetString(co.OutBuf(), co.OutBufLen(), "i got style")
b, s := co.GoValues()
assert.EqualValues(t, []byte("i got style"), b)
assert.EqualValues(t, "", s)
})
t.Run("setOnlyOuts", func(t *testing.T) {
co := NewCommandOutput()
assert.NotNil(t, co)
defer co.Free()
testSetString(co.Outs(), co.OutsLen(), "i got rhythm")
b, s := co.GoValues()
assert.Nil(t, b)
assert.EqualValues(t, "i got rhythm", s)
})
t.Run("customFreeFunc", func(t *testing.T) {
callCount := 0
co := NewCommandOutput().SetFreeFunc(func(p unsafe.Pointer) {
callCount++
free(p)
})
assert.NotNil(t, co)
testSetString(co.OutBuf(), co.OutBufLen(), "i got style")
testSetString(co.Outs(), co.OutsLen(), "i got rhythm")
co.Free()
assert.Equal(t, 2, callCount)
})
}