capsule AI-native Unix-like composition layer

src/server/internal/direct/pacing_test.go

1,102 bytes · 38 lines · capsule://quake0day/[email protected] raw on github

package direct

import (
	"testing"
	"time"

	"github.com/cyberverse/server/internal/mediapeer"
	"github.com/pion/webrtc/v4/pkg/media"
)

func TestAVSegmentWallDurationUsesExplicitSegmentDuration(t *testing.T) {
	t.Parallel()
	seg := &mediapeer.AVSegment{DurationMS: 1600, VP8Samples: make([]media.Sample, 10)}
	if got := avSegmentWallDuration(seg, 50*time.Millisecond, nil); got != 1600*time.Millisecond {
		t.Fatalf("duration=%v want 1600ms", got)
	}
}

func TestAVSegmentWallDurationFallsBackToLongestTrack(t *testing.T) {
	t.Parallel()
	seg := &mediapeer.AVSegment{VP8Samples: make([]media.Sample, 10)}
	audio := []media.Sample{
		{Duration: 20 * time.Millisecond},
		{Duration: 20 * time.Millisecond},
	}
	if got := avSegmentWallDuration(seg, 50*time.Millisecond, audio); got != 500*time.Millisecond {
		t.Fatalf("duration=%v want 500ms", got)
	}

	audio = make([]media.Sample, 40)
	for i := range audio {
		audio[i].Duration = 20 * time.Millisecond
	}
	if got := avSegmentWallDuration(seg, 50*time.Millisecond, audio); got != 800*time.Millisecond {
		t.Fatalf("duration=%v want 800ms", got)
	}
}