obws/tests/recording.rs
2020-12-31 14:47:54 +09:00

45 lines
1.3 KiB
Rust

#![cfg(feature = "test-integration")]
use std::path::Path;
use std::time::Duration;
use anyhow::Result;
use futures_util::{pin_mut, StreamExt};
use obws::events::{Event, EventType};
use tokio::time;
#[macro_use]
mod common;
#[tokio::test]
async fn main() -> Result<()> {
let client = common::new_client().await?;
let events = client.events();
let client = client.recording();
pin_mut!(events);
client.start_stop_recording().await?;
wait_for!(events, EventType::RecordingStarted);
client.start_stop_recording().await?;
wait_for!(events, EventType::RecordingStopped);
// Wait a little more as recording sometimes doesn't start when started/stopped frequently.
time::sleep(Duration::from_secs(1)).await;
client.start_recording().await?;
wait_for!(events, EventType::RecordingStarted);
// Pausing doesn't seem to work currently
// client.pause_recording().await?;
// wait_for!(events, EventType::RecordingPaused);
// client.resume_recording().await?;
// wait_for!(events, EventType::RecordingResumed);
client.stop_recording().await?;
wait_for!(events, EventType::RecordingStopped);
let original = client.get_recording_folder().await?;
client.set_recording_folder(Path::new("test")).await?;
client.set_recording_folder(&original).await?;
Ok(())
}