You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.5 KiB
80 lines
1.5 KiB
package bom_test |
|
|
|
import ( |
|
"bytes" |
|
"io/ioutil" |
|
"testing" |
|
|
|
"go-common/app/admin/main/member/model/bom" |
|
|
|
"github.com/stretchr/testify/assert" |
|
) |
|
|
|
var testCases = []struct { |
|
Input []byte |
|
Expected []byte |
|
}{ |
|
{ |
|
Input: nil, |
|
Expected: nil, |
|
}, |
|
{ |
|
Input: []byte{}, |
|
Expected: []byte{}, |
|
}, |
|
{ |
|
Input: []byte{0xef}, |
|
Expected: []byte{0xef}, |
|
}, |
|
{ |
|
Input: []byte{0xef, 0xbb}, |
|
Expected: []byte{0xef, 0xbb}, |
|
}, |
|
{ |
|
Input: []byte{0xef, 0xbb, 0xbf}, |
|
Expected: []byte{}, |
|
}, |
|
{ |
|
Input: []byte{0xef, 0xbb, 0xbf, 0x41, 0x42, 0x43}, |
|
Expected: []byte{0x41, 0x42, 0x43}, |
|
}, |
|
{ |
|
Input: []byte{0xef, 0xbb, 0x41, 0x42, 0x43}, |
|
Expected: []byte{0xef, 0xbb, 0x41, 0x42, 0x43}, |
|
}, |
|
{ |
|
Input: []byte{0xef, 0x41, 0x42, 0x43}, |
|
Expected: []byte{0xef, 0x41, 0x42, 0x43}, |
|
}, |
|
{ |
|
Input: []byte{0x41, 0x42, 0x43}, |
|
Expected: []byte{0x41, 0x42, 0x43}, |
|
}, |
|
} |
|
|
|
func TestClean(t *testing.T) { |
|
assert := assert.New(t) |
|
|
|
for _, tc := range testCases { |
|
output := bom.Clean(tc.Input) |
|
assert.Equal(tc.Expected, output) |
|
} |
|
} |
|
|
|
func TestReader(t *testing.T) { |
|
assert := assert.New(t) |
|
|
|
for _, tc := range testCases { |
|
// An input value of nil works differently to the Clean function. |
|
// In this case it results in an empty buffer, not nil. |
|
expected := tc.Expected |
|
if tc.Input == nil { |
|
expected = []byte{} |
|
} |
|
r1 := bytes.NewReader(tc.Input) |
|
r2 := bom.NewReader(r1) |
|
output, err := ioutil.ReadAll(r2) |
|
assert.NoError(err) |
|
assert.Equal(expected, output) |
|
} |
|
}
|
|
|