mirror of
https://github.com/aler9/gortsplib
synced 2025-10-06 07:37:07 +08:00
55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
package rtptimedec
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestOverflow(t *testing.T) {
|
|
d := New(90000)
|
|
|
|
i := uint32(4294877296)
|
|
pts := d.Decode(i)
|
|
require.Equal(t, time.Duration(0), pts)
|
|
|
|
// 1st overflow
|
|
i += 90000 * 2
|
|
pts = d.Decode(i)
|
|
require.Equal(t, 2*time.Second, pts)
|
|
|
|
// reach 4294890000 slowly
|
|
for ; i < 4294890000; i += 90000 * 10 {
|
|
pts = d.Decode(i)
|
|
require.Equal(t, 2*time.Second+time.Second*time.Duration(i-90000)/90000, pts)
|
|
}
|
|
|
|
// 2nd overflow
|
|
i += 90000 * 10
|
|
pts = d.Decode(i)
|
|
require.Equal(t, 47732*time.Second, pts)
|
|
}
|
|
|
|
func TestOverflowAndBack(t *testing.T) {
|
|
d := New(90000)
|
|
|
|
pts := d.Decode(4294877296)
|
|
require.Equal(t, time.Duration(0), pts)
|
|
|
|
pts = d.Decode(90000)
|
|
require.Equal(t, 2*time.Second, pts)
|
|
|
|
pts = d.Decode(4294877296)
|
|
require.Equal(t, time.Duration(0), pts)
|
|
|
|
pts = d.Decode(4294877296 - 90000)
|
|
require.Equal(t, -1*time.Second, pts)
|
|
|
|
pts = d.Decode(4294877296)
|
|
require.Equal(t, time.Duration(0), pts)
|
|
|
|
pts = d.Decode(90000)
|
|
require.Equal(t, 2*time.Second, pts)
|
|
}
|