soundcraft/crates/engine/tests/session_transport.rs

31 lines
1.4 KiB
Rust

use serde_json::json;
use soundcraft_engine::{Engine, TransportRequest, TransportStatus};
use soundcraft_model::Session;
use soundcraft_time::Range;
#[test]
fn replacing_session_resets_status_and_discards_old_transport_requests() {
let mut engine = Engine::default();
engine.transport = TransportStatus { playing: true, recording: true, position: 48_000 };
engine.execute("transport.play", &json!({"from": 96_000})).unwrap();
engine.execute("transport.record", &json!({})).unwrap();
let mut session = Session::default();
session.edit.selection = Range::point(12_000);
engine.replace_session(session);
assert_eq!(engine.transport, TransportStatus { position: 12_000, ..TransportStatus::default() });
assert_eq!(engine.transport_requests, vec![TransportRequest::ResetSession]);
assert!(!engine.is_dirty());
}
#[test]
fn failed_new_session_keeps_the_current_transport() {
let mut engine = Engine::default();
engine.transport = TransportStatus { playing: true, position: 48_000, ..TransportStatus::default() };
engine.execute("transport.play", &json!({})).unwrap();
let status = engine.transport;
let requests = engine.transport_requests.clone();
assert!(engine.execute("session.new", &json!({"sample_rate": 0})).is_err());
assert_eq!(engine.transport, status);
assert_eq!(engine.transport_requests, requests);
}