Add randomized test for DisplayMap

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
Max Brunsfeld 2021-07-28 14:35:12 -07:00
parent 576cabea93
commit c1808d09ef
3 changed files with 161 additions and 26 deletions

View file

@ -1,6 +1,8 @@
use crate::{fs::RealFs, language::LanguageRegistry, rpc, settings, time::ReplicaId, AppState};
use gpui::AppContext;
use gpui::{AppContext, Entity, ModelHandle};
use smol::channel;
use std::{
marker::PhantomData,
path::{Path, PathBuf},
sync::Arc,
};
@ -155,3 +157,25 @@ pub fn build_app_state(cx: &AppContext) -> Arc<AppState> {
fs: Arc::new(RealFs),
})
}
pub struct Observer<T>(PhantomData<T>);
impl<T: 'static + Send + Sync> Entity for Observer<T> {
type Event = ();
}
impl<T: Entity> Observer<T> {
pub fn new(
handle: &ModelHandle<T>,
cx: &mut gpui::TestAppContext,
) -> (ModelHandle<Self>, channel::Receiver<()>) {
let (notify_tx, notify_rx) = channel::unbounded();
let observer = cx.add_model(|cx| {
cx.observe(handle, move |_, _, _| {
let _ = notify_tx.try_send(());
});
Observer(PhantomData)
});
(observer, notify_rx)
}
}