Add test for stream_excerpts_with_context_lines
This commit is contained in:
parent
5ce065ac92
commit
c124caeb0d
2 changed files with 40 additions and 1 deletions
|
@ -3676,6 +3676,7 @@ where
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use futures::StreamExt;
|
||||||
use gpui::{MutableAppContext, TestAppContext};
|
use gpui::{MutableAppContext, TestAppContext};
|
||||||
use language::{Buffer, Rope};
|
use language::{Buffer, Rope};
|
||||||
use rand::prelude::*;
|
use rand::prelude::*;
|
||||||
|
@ -4080,6 +4081,44 @@ mod tests {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[gpui::test]
|
||||||
|
async fn test_stream_excerpts_with_context_lines(cx: &mut TestAppContext) {
|
||||||
|
let buffer = cx.add_model(|cx| Buffer::new(0, sample_text(20, 3, 'a'), cx));
|
||||||
|
let multibuffer = cx.add_model(|_| MultiBuffer::new(0));
|
||||||
|
let (task, anchor_ranges) = multibuffer.update(cx, |multibuffer, cx| {
|
||||||
|
let snapshot = buffer.read(cx);
|
||||||
|
let ranges = vec![
|
||||||
|
snapshot.anchor_before(Point::new(3, 2))..snapshot.anchor_before(Point::new(4, 2)),
|
||||||
|
snapshot.anchor_before(Point::new(7, 1))..snapshot.anchor_before(Point::new(7, 3)),
|
||||||
|
snapshot.anchor_before(Point::new(15, 0))
|
||||||
|
..snapshot.anchor_before(Point::new(15, 0)),
|
||||||
|
];
|
||||||
|
multibuffer.stream_excerpts_with_context_lines(vec![(buffer.clone(), ranges)], 2, cx)
|
||||||
|
});
|
||||||
|
|
||||||
|
let anchor_ranges = anchor_ranges.collect::<Vec<_>>().await;
|
||||||
|
// Ensure task is finished when stream completes.
|
||||||
|
task.await;
|
||||||
|
|
||||||
|
let snapshot = multibuffer.read_with(cx, |multibuffer, cx| multibuffer.snapshot(cx));
|
||||||
|
assert_eq!(
|
||||||
|
snapshot.text(),
|
||||||
|
"bbb\nccc\nddd\neee\nfff\nggg\nhhh\niii\njjj\n\nnnn\nooo\nppp\nqqq\nrrr\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
anchor_ranges
|
||||||
|
.iter()
|
||||||
|
.map(|range| range.to_point(&snapshot))
|
||||||
|
.collect::<Vec<_>>(),
|
||||||
|
vec![
|
||||||
|
Point::new(2, 2)..Point::new(3, 2),
|
||||||
|
Point::new(6, 1)..Point::new(6, 3),
|
||||||
|
Point::new(12, 0)..Point::new(12, 0)
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[gpui::test]
|
#[gpui::test]
|
||||||
fn test_empty_multibuffer(cx: &mut MutableAppContext) {
|
fn test_empty_multibuffer(cx: &mut MutableAppContext) {
|
||||||
let multibuffer = cx.add_model(|_| MultiBuffer::new(0));
|
let multibuffer = cx.add_model(|_| MultiBuffer::new(0));
|
||||||
|
|
|
@ -130,7 +130,7 @@ impl ProjectSearch {
|
||||||
let matches = search.await.log_err()?;
|
let matches = search.await.log_err()?;
|
||||||
let this = this.upgrade(&cx)?;
|
let this = this.upgrade(&cx)?;
|
||||||
let mut matches = matches.into_iter().collect::<Vec<_>>();
|
let mut matches = matches.into_iter().collect::<Vec<_>>();
|
||||||
let (_rebuild, mut match_ranges) = this.update(&mut cx, |this, cx| {
|
let (_task, mut match_ranges) = this.update(&mut cx, |this, cx| {
|
||||||
this.match_ranges.clear();
|
this.match_ranges.clear();
|
||||||
matches.sort_by_key(|(buffer, _)| buffer.read(cx).file().map(|file| file.path()));
|
matches.sort_by_key(|(buffer, _)| buffer.read(cx).file().map(|file| file.path()));
|
||||||
this.excerpts.update(cx, |excerpts, cx| {
|
this.excerpts.update(cx, |excerpts, cx| {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue