This repository has been archived on 2026-10-10. You can view files and clone it, but cannot push or open issues or pull requests.
molotov/crates/molotov-core/tests/pipewire_lifecycle_test.rs

37 lines
1.5 KiB
Rust

// SPDX-License-Identifier: GPL-3.0-or-later
use molotov_core::audio::pipewire::PipeWireStreamController;
use molotov_core::audio::types::{AAudioDirection, AAudioFormat, AAudioStreamState};
#[test]
fn test_capture_stream_only_active_during_start() {
let mut controller = PipeWireStreamController::new(
AAudioDirection::Input,
48000,
2,
AAudioFormat::PcmFloat,
2048,
);
// Initial state: open, but capture node NOT yet active
assert_eq!(controller.state(), AAudioStreamState::Open);
assert!(!controller.is_stream_active(), "Mic node must NOT be active before requestStart");
// requestStart: connects capture node
controller.request_start().unwrap();
assert_eq!(controller.state(), AAudioStreamState::Started);
assert!(controller.is_stream_active(), "Mic node MUST be active during recording");
// requestPause: DESTROYS capture node to prevent persistent desktop indicator
controller.request_pause().unwrap();
assert_eq!(controller.state(), AAudioStreamState::Paused);
assert!(!controller.is_stream_active(), "Mic node MUST be destroyed on pause");
// requestStart again: reconnects node
controller.request_start().unwrap();
assert!(controller.is_stream_active());
// requestStop: destroys node
controller.request_stop().unwrap();
assert_eq!(controller.state(), AAudioStreamState::Stopped);
assert!(!controller.is_stream_active(), "Mic node MUST be destroyed on stop");
}