GetPeaksForSegment: add extra invalid arg check

This commit is contained in:
Rob Watson 2022-02-04 16:22:06 +01:00
parent a9ea462b41
commit 6dde29cdcf
2 changed files with 12 additions and 2 deletions

View File

@ -367,7 +367,7 @@ outer:
}
func (s *MediaSetService) GetPeaksForSegment(ctx context.Context, id uuid.UUID, startFrame, endFrame int64, numBins int) ([]int16, error) {
if startFrame < 0 || endFrame < 0 || numBins <= 0 {
if startFrame < 0 || endFrame < 0 || numBins <= 0 || startFrame == endFrame {
s.logger.With("startFrame", startFrame, "endFrame", endFrame, "numBins", numBins).Error("invalid arguments")
return nil, errors.New("invalid arguments")
}

View File

@ -51,6 +51,15 @@ func TestPeaksForSegment(t *testing.T) {
wantPeaks []int16
wantErr string
}{
{
name: "NOK, invalid arguments",
fixturePath: "testdata/tone-44100-stereo-int16.raw",
startFrame: 0,
endFrame: 0,
channels: 2,
numBins: 1,
wantErr: "invalid arguments",
},
{
name: "OK, entire fixture, stereo, 1 bin",
fixturePath: "testdata/tone-44100-stereo-int16.raw",
@ -146,7 +155,6 @@ func TestPeaksForSegment(t *testing.T) {
// store is passed the mediaSetID and returns a mediaSet
store := &mocks.Store{}
store.On("GetMediaSet", mock.Anything, mediaSet.ID).Return(mediaSet, nil)
defer store.AssertExpectations(t)
// fileStore is passed the expected byte range, and returns an io.Reader
fileStore := &mocks.FileStore{}
@ -158,6 +166,8 @@ func TestPeaksForSegment(t *testing.T) {
peaks, err := service.GetPeaksForSegment(context.Background(), mediaSet.ID, tc.startFrame, tc.endFrame, tc.numBins)
if tc.wantErr == "" {
defer store.AssertExpectations(t)
require.NoError(t, err)
assert.Equal(t, tc.wantPeaks, peaks)
} else {