use super::*; #[tokio::test(flavor = "multi_thread")] async fn test_split_write_quit_all() -> anyhow::Result<()> { let mut file1 = tempfile::NamedTempFile::new()?; let mut file2 = tempfile::NamedTempFile::new()?; let mut file3 = tempfile::NamedTempFile::new()?; let mut app = helpers::AppBuilder::new() .with_file(file1.path(), None) .build()?; test_key_sequences( &mut app, vec![ ( Some(&format!( "ihello1:sp:o {}ihello2:sp:o {}ihello3", file2.path().to_string_lossy(), file3.path().to_string_lossy() )), Some(&|app| { let docs: Vec<_> = app.editor.documents().collect(); assert_eq!(3, docs.len()); let doc1 = docs .iter() .find(|doc| doc.path().unwrap() == file1.path()) .unwrap(); assert_eq!("hello1", doc1.text().to_string()); let doc2 = docs .iter() .find(|doc| doc.path().unwrap() == file2.path()) .unwrap(); assert_eq!("hello2", doc2.text().to_string()); let doc3 = docs .iter() .find(|doc| doc.path().unwrap() == file3.path()) .unwrap(); assert_eq!("hello3", doc3.text().to_string()); helpers::assert_status_not_error(&app.editor); assert_eq!(3, app.editor.tree.views().count()); }), ), ( Some(":wqa"), Some(&|app| { helpers::assert_status_not_error(&app.editor); assert_eq!(0, app.editor.tree.views().count()); }), ), ], true, ) .await?; helpers::assert_file_has_content(file1.as_file_mut(), "hello1")?; helpers::assert_file_has_content(file2.as_file_mut(), "hello2")?; helpers::assert_file_has_content(file3.as_file_mut(), "hello3")?; Ok(()) } #[tokio::test(flavor = "multi_thread")] async fn test_split_write_quit_same_file() -> anyhow::Result<()> { let mut file = tempfile::NamedTempFile::new()?; let mut app = helpers::AppBuilder::new() .with_file(file.path(), None) .build()?; test_key_sequences( &mut app, vec![ ( Some("Oihello:spogoodbye"), Some(&|app| { assert_eq!(2, app.editor.tree.views().count()); helpers::assert_status_not_error(&app.editor); let mut docs: Vec<_> = app.editor.documents().collect(); assert_eq!(1, docs.len()); let doc = docs.pop().unwrap(); assert_eq!( helpers::platform_line("hello\ngoodbye"), doc.text().to_string() ); assert!(doc.is_modified()); }), ), ( Some(":wq"), Some(&|app| { helpers::assert_status_not_error(&app.editor); assert_eq!(1, app.editor.tree.views().count()); let mut docs: Vec<_> = app.editor.documents().collect(); assert_eq!(1, docs.len()); let doc = docs.pop().unwrap(); assert_eq!( helpers::platform_line("hello\ngoodbye"), doc.text().to_string() ); assert!(!doc.is_modified()); }), ), ], false, ) .await?; helpers::assert_file_has_content( file.as_file_mut(), &helpers::platform_line("hello\ngoodbye"), )?; Ok(()) }