-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathffmpeg_test.go
More file actions
41 lines (34 loc) · 1.33 KB
/
ffmpeg_test.go
File metadata and controls
41 lines (34 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
import (
"time"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("parseSceneTimestamps", func() {
It("parses pts_time values from ffmpeg showinfo output", func() {
stderr := `[Parsed_showinfo_1 @ 0x55f] n: 0 pts: 0 pts_time:0 pos:...
[Parsed_showinfo_1 @ 0x55f] n: 1 pts: 90000 pts_time:3.5 pos:...
[Parsed_showinfo_1 @ 0x55f] n: 2 pts: 270000 pts_time:10.75 pos:...`
timestamps := parseSceneTimestamps(stderr)
Expect(timestamps).To(HaveLen(3))
Expect(timestamps[0]).To(Equal(0 * time.Second))
Expect(timestamps[1]).To(Equal(3*time.Second + 500*time.Millisecond))
Expect(timestamps[2]).To(Equal(10*time.Second + 750*time.Millisecond))
})
It("returns empty slice for no matches", func() {
Expect(parseSceneTimestamps("no matches here")).To(BeEmpty())
})
})
var _ = Describe("formatSeekTimestamp", func() {
It("formats zero duration", func() {
Expect(formatSeekTimestamp(0)).To(Equal("00:00:00.000"))
})
It("formats hours, minutes, seconds, milliseconds", func() {
d := 1*time.Hour + 2*time.Minute + 3*time.Second + 456*time.Millisecond
Expect(formatSeekTimestamp(d)).To(Equal("01:02:03.456"))
})
It("formats seconds and milliseconds only", func() {
d := 10*time.Second + 750*time.Millisecond
Expect(formatSeekTimestamp(d)).To(Equal("00:00:10.750"))
})
})