obws/tests/media_control.rs
2021-02-15 20:39:26 +09:00

41 lines
1.3 KiB
Rust

#![cfg(feature = "test-integration")]
use anyhow::Result;
use futures_util::{pin_mut, StreamExt};
use obws::events::{Event, EventType};
use common::TEST_MEDIA;
#[macro_use]
mod common;
#[tokio::test]
async fn main() -> Result<()> {
let client = common::new_client().await?;
let events = client.events();
let client = client.media_control();
pin_mut!(events);
client.play_pause_media(TEST_MEDIA, false).await?;
wait_for!(events, EventType::MediaPlaying { .. });
client.next_media(TEST_MEDIA).await?;
wait_for!(events, EventType::MediaNext { .. });
client.previous_media(TEST_MEDIA).await?;
wait_for!(events, EventType::MediaPrevious { .. });
client.play_pause_media(TEST_MEDIA, true).await?;
wait_for!(events, EventType::MediaPaused { .. });
let duration = client.get_media_duration(TEST_MEDIA).await?;
client.set_media_time(TEST_MEDIA, duration / 2).await?;
client.get_media_time(TEST_MEDIA).await?;
client.scrub_media(TEST_MEDIA, duration / 4).await?;
client.get_media_state(TEST_MEDIA).await?;
client.restart_media(TEST_MEDIA).await?;
wait_for!(events, EventType::MediaRestarted { .. });
client.stop_media(TEST_MEDIA).await?;
wait_for!(events, EventType::MediaStopped { .. });
Ok(())
}