messages:

- [feat] package nazastring,增加SubSliceSafety函数,安全的获取切片的子切片
- [feat] package nazaerrors,增加CombineErrors函数,将多个error组合成一个
pull/2/head
q191201771 4 years ago
parent 109404ceb9
commit 82ba4581b3

@ -0,0 +1,20 @@
// Copyright 2021, Chef. All rights reserved.
// https://github.com/q191201771/naza
//
// Use of this source code is governed by a MIT-style license
// that can be found in the License file.
//
// Author: Chef (191201771@qq.com)
package nazaerrors
// 将多个error合并为一个
// 当前的策略是取第一个不为nil的error返回
func CombineErrors(errs ...error) error {
for _, err := range errs {
if err != nil {
return err
}
}
return nil
}

@ -0,0 +1,54 @@
// Copyright 2021, Chef. All rights reserved.
// https://github.com/q191201771/naza
//
// Use of this source code is governed by a MIT-style license
// that can be found in the License file.
//
// Author: Chef (191201771@qq.com)
package nazaerrors
import (
"errors"
"io"
"testing"
"github.com/q191201771/naza/pkg/assert"
)
func TestCombineErrors(t *testing.T) {
golden := []error{
nil,
io.EOF,
errors.New("1"),
}
var err error
err = CombineErrors(nil)
assert.Equal(t, nil, err)
err = CombineErrors(golden[1])
assert.Equal(t, golden[1], err)
err = CombineErrors(golden[2])
assert.Equal(t, golden[2], err)
err = CombineErrors(nil, golden[1])
assert.Equal(t, golden[1], err)
err = CombineErrors(nil, golden[2])
assert.Equal(t, golden[2], err)
err = CombineErrors(golden[1], nil)
assert.Equal(t, golden[1], err)
err = CombineErrors(nil, golden[1], golden[2])
assert.Equal(t, golden[1], err)
err = CombineErrors(golden[1], nil, golden[2])
assert.Equal(t, golden[1], err)
err = CombineErrors(golden[1], golden[2], nil)
assert.Equal(t, golden[1], err)
}

@ -28,8 +28,7 @@ func GetHTTPFile(url string, timeoutMSec int) ([]byte, error) {
}
defer resp.Body.Close()
content, err := ioutil.ReadAll(resp.Body)
return content, err
return ioutil.ReadAll(resp.Body)
}
// 获取http文件保存至本地

@ -60,3 +60,11 @@ func DumpSliceByte(b []byte) string {
bb.WriteString("}")
return bb.String()
}
// @param m 对切片做子切片操作取值范围大于0如果超过了原切片大小则返回原切片
func SubSliceSafety(b []byte, m int) []byte {
if m <= len(b) {
return b[:m]
}
return b
}

@ -28,6 +28,25 @@ func TestStringToSliceByteTmp(t *testing.T) {
assert.Equal(t, inbuf, buf)
}
func TestDumpSliceByte(t *testing.T) {
golden := []byte{1, 2, 3, 4, 5}
ret := DumpSliceByte(golden)
assert.Equal(t, "[]byte{0x01, 0x02, 0x03, 0x04, 0x05}", ret)
}
func TestSubSliceSafety(t *testing.T) {
var b []byte
assert.Equal(t, nil, SubSliceSafety(b, 1))
assert.Equal(t, nil, SubSliceSafety(b, 2))
b = []byte{1}
assert.Equal(t, b, SubSliceSafety(b, 1))
assert.Equal(t, b, SubSliceSafety(b, 2))
b = []byte{1, 2}
assert.Equal(t, []byte{1}, SubSliceSafety(b, 1))
assert.Equal(t, b, SubSliceSafety(b, 2))
assert.Equal(t, b, SubSliceSafety(b, 3))
}
func BenchmarkSliceByteToStringOrigin(b *testing.B) {
var str string

Loading…
Cancel
Save