node build fixed
This commit is contained in:
141
seanime-2.9.10/internal/mediaplayers/iina/iina_test.go
Normal file
141
seanime-2.9.10/internal/mediaplayers/iina/iina_test.go
Normal file
@@ -0,0 +1,141 @@
|
||||
package iina
|
||||
|
||||
import (
|
||||
"seanime/internal/test_utils"
|
||||
"seanime/internal/util"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
var testFilePath = "/Users/rahim/Documents/collection/Bocchi the Rock/[ASW] Bocchi the Rock! - 01 [1080p HEVC][EDC91675].mkv"
|
||||
var testFilePath2 = "/Users/rahim/Documents/collection/One Piece/[Erai-raws] One Piece - 1072 [1080p][Multiple Subtitle][51CB925F].mkv"
|
||||
|
||||
func TestIina_OpenPlayPauseSeekClose(t *testing.T) {
|
||||
test_utils.InitTestProvider(t, test_utils.MediaPlayer())
|
||||
|
||||
i := New(util.NewLogger(), "", "")
|
||||
|
||||
// Test Open and Play
|
||||
t.Log("Open and Play...")
|
||||
err := i.OpenAndPlay(testFilePath)
|
||||
if err != nil {
|
||||
t.Skipf("Skipping test: %v", err)
|
||||
}
|
||||
|
||||
// Subscribe to events
|
||||
sub := i.Subscribe("test")
|
||||
|
||||
time.Sleep(3 * time.Second)
|
||||
|
||||
t.Log("Get Playback Status...")
|
||||
status, err := i.GetPlaybackStatus()
|
||||
if err != nil {
|
||||
t.Logf("Warning: Could not get playback status: %v", err)
|
||||
} else {
|
||||
t.Logf("Playback Status: Duration=%.2f, Position=%.2f, Playing=%t, Filename=%s",
|
||||
status.Duration, status.Position, !status.Paused, status.Filename)
|
||||
assert.True(t, status.IsRunning, "Player should be running")
|
||||
assert.Greater(t, status.Duration, 0.0, "Duration should be greater than 0")
|
||||
}
|
||||
|
||||
t.Log("Pause...")
|
||||
err = i.Pause()
|
||||
if err != nil {
|
||||
t.Logf("Warning: Could not pause: %v", err)
|
||||
} else {
|
||||
time.Sleep(2 * time.Second)
|
||||
status, err := i.GetPlaybackStatus()
|
||||
if err == nil {
|
||||
t.Logf("After pause - Paused: %t", status.Paused)
|
||||
assert.True(t, status.Paused, "Player should be paused")
|
||||
}
|
||||
}
|
||||
|
||||
t.Log("Resume...")
|
||||
err = i.Resume()
|
||||
if err != nil {
|
||||
t.Logf("Warning: Could not resume: %v", err)
|
||||
} else {
|
||||
time.Sleep(2 * time.Second)
|
||||
status, err := i.GetPlaybackStatus()
|
||||
if err == nil {
|
||||
t.Logf("After resume - Paused: %t", status.Paused)
|
||||
assert.False(t, status.Paused, "Player should not be paused")
|
||||
}
|
||||
}
|
||||
|
||||
t.Log("Seek...")
|
||||
seekPosition := 30.0 // Seek to 30 seconds
|
||||
err = i.Seek(seekPosition)
|
||||
if err != nil {
|
||||
t.Logf("Warning: Could not seek: %v", err)
|
||||
} else {
|
||||
time.Sleep(2 * time.Second)
|
||||
status, err := i.GetPlaybackStatus()
|
||||
if err == nil {
|
||||
t.Logf("After seek - Position: %.2f", status.Position)
|
||||
assert.InDelta(t, seekPosition, status.Position, 5.0, "Position should be close to seek position")
|
||||
}
|
||||
}
|
||||
|
||||
t.Log("SeekTo...")
|
||||
seekToPosition := 60.0 // Seek to 60 seconds
|
||||
err = i.SeekTo(seekToPosition)
|
||||
if err != nil {
|
||||
t.Logf("Warning: Could not seek to position: %v", err)
|
||||
} else {
|
||||
time.Sleep(2 * time.Second)
|
||||
status, err := i.GetPlaybackStatus()
|
||||
if err == nil {
|
||||
t.Logf("After seekTo - Position: %.2f", status.Position)
|
||||
assert.InDelta(t, seekToPosition, status.Position, 5.0, "Position should be close to seekTo position")
|
||||
}
|
||||
}
|
||||
|
||||
// Test loading another file
|
||||
t.Log("Open another file...")
|
||||
err = i.OpenAndPlay(testFilePath2)
|
||||
if err != nil {
|
||||
t.Logf("Warning: Could not open another file: %v", err)
|
||||
} else {
|
||||
time.Sleep(2 * time.Second) // Wait for the new file to load
|
||||
status, err := i.GetPlaybackStatus()
|
||||
if err != nil {
|
||||
t.Logf("Warning: Could not get playback status after opening another file: %v", err)
|
||||
} else {
|
||||
t.Logf("New Playback Status: Duration=%.2f, Position=%.2f, Playing=%t, Filename=%s",
|
||||
status.Duration, status.Position, !status.Paused, status.Filename)
|
||||
assert.True(t, status.IsRunning, "Player should be running after opening another file")
|
||||
assert.Greater(t, status.Duration, 0.0, "Duration should be greater than 0 after opening another file")
|
||||
}
|
||||
}
|
||||
|
||||
// Test Close
|
||||
t.Log("Close...")
|
||||
go func() {
|
||||
time.Sleep(2 * time.Second)
|
||||
i.CloseAll()
|
||||
}()
|
||||
|
||||
// Wait for close event
|
||||
select {
|
||||
case <-sub.Closed():
|
||||
t.Log("IINA exited successfully")
|
||||
case <-time.After(10 * time.Second):
|
||||
t.Log("Timeout waiting for IINA to close")
|
||||
i.CloseAll() // Force close
|
||||
}
|
||||
|
||||
// Verify player is not running
|
||||
time.Sleep(1 * time.Second)
|
||||
status, err = i.GetPlaybackStatus()
|
||||
if err != nil {
|
||||
t.Log("Confirmed: Player is no longer running")
|
||||
} else if status != nil && !status.IsRunning {
|
||||
t.Log("Confirmed: Player status shows not running")
|
||||
}
|
||||
|
||||
t.Log("Test completed successfully")
|
||||
}
|
||||
Reference in New Issue
Block a user