Skip to content

Commit

Permalink
add more tests because I got paranoid (#22)
Browse files Browse the repository at this point in the history
  • Loading branch information
marcrleonard authored Jan 10, 2025
2 parents 2560b42 + 9ff44b3 commit 8c73ca4
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 3 deletions.
4 changes: 2 additions & 2 deletions internal/timecode.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,8 +266,8 @@ func (t *Timecode) GetFrameCount() int {

func (t *Timecode) GetFrameIdx() int {

var timeBase int = getTimeBase(t.FrameRate)
var frameCount int = 0
timeBase := getTimeBase(t.FrameRate)
frameCount := 0
if t.DropFrame == false {
hrsToSecs := t._hours * 60 * 60
minsToSecs := t._mins * 60
Expand Down
72 changes: 72 additions & 0 deletions internal/timecode_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,78 @@ func TestRolloverBackwardsNDF(t *testing.T) {
require.Equal(t, "23:59:59:23", tc.GetTimecode())
}

func Test_TimecodeIndexes(t *testing.T) {
tests := []struct {
name string
timecode string
framerate float64
expectedIdx int
}{
{
name: "29.97",
timecode: "00:00:00:00",
framerate: 29.97,
expectedIdx: 0,
},
{
name: "29.97",
timecode: "00:00:01:00",
framerate: 29.97,
expectedIdx: 30,
},
{
name: "29.97",
timecode: "01:00:00:00",
framerate: 29.97,
expectedIdx: 108000,
},
{
name: "29.97",
timecode: "10:00:00:00",
framerate: 29.97,
expectedIdx: 1080000,
},
{
name: "24",
timecode: "00:00:01:00",
framerate: 24,
expectedIdx: 24,
},
{
name: "24",
timecode: "01:00:00:00",
framerate: 24,
expectedIdx: 86400,
},
{
name: "24",
timecode: "10:00:00:00",
framerate: 24,
expectedIdx: 864000,
},
{
name: "24",
timecode: "20:00:00:00",
framerate: 24,
expectedIdx: 1_728_000,
},
{
name: "24",
timecode: "23:00:00:00",
framerate: 24,
expectedIdx: 1987200,
},
}
t.Parallel()
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tc, err := NewTimecodeFromString(tt.timecode, tt.framerate)
require.NoError(t, err)
require.Equal(t, tt.expectedIdx, tc.GetFrameIdx())
})
}
}

func TestDfIFrameRates(t *testing.T) {
tests := []struct {
name string
Expand Down
52 changes: 52 additions & 0 deletions internal/timecodespan_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package internal

import (
"testing"

"github.com/stretchr/testify/require"
)

func TestNewTimecodeSpan(t *testing.T) {
Expand Down Expand Up @@ -70,3 +72,53 @@ func TestGetSpanRealtime(t *testing.T) {
t.Errorf("expected realtime %v, got %v", expected, got)
}
}

func Test_SpanIndexes(t *testing.T) {
tests := []struct {
name string
startTimecode string
endTimecode string
fps float64
firstIdx int
lastIdx int
spanFrameCount int
}{
{
name: "24",
startTimecode: "00:00:00:00",
endTimecode: "00:00:01:00",
fps: 24,
spanFrameCount: 25,
},
{
name: "25",
startTimecode: "00:00:00:00",
endTimecode: "00:10:01:03",
fps: 25,
spanFrameCount: 15029,
},
{
name: "24",
startTimecode: "00:00:00:00",
endTimecode: "23:59:59:23",
fps: 24,
spanFrameCount: 2073600,
},
}

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
start, err := NewTimecodeFromString(test.startTimecode, test.fps)
require.NoError(t, err)
end, err := NewTimecodeFromString(test.endTimecode, test.fps)
require.NoError(t, err)
span, err := NewTimecodeSpan(start, end)
require.NoError(t, err)

_ = span.GetSpanRealtime()

require.Equal(t, test.spanFrameCount, span.GetTotalFrames())

})
}
}
2 changes: 1 addition & 1 deletion pkg/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.0.14
0.0.15

0 comments on commit 8c73ca4

Please sign in to comment.