Initial public release of Warp.
Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
@@ -0,0 +1,208 @@
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn vim_inner_paragraph_empty_buffer() {
|
||||
assert_eq!(vim_inner_paragraph("", 0), Some(0.into()..0.into()));
|
||||
assert_eq!(vim_inner_paragraph("", 1), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_a_paragraph_empty_buffer() {
|
||||
assert_eq!(vim_a_paragraph("", 0), Some(0.into()..0.into()));
|
||||
assert_eq!(vim_a_paragraph("", 1), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_inner_paragraph_single_paragraph() {
|
||||
let text = "foo bar\nnext line\n";
|
||||
|
||||
for (i, ch) in text.chars().enumerate() {
|
||||
if ch != '\n' {
|
||||
let range = vim_inner_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, 0.into()..text.len().into());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_a_paragraph_single_paragraph() {
|
||||
let text = "foo bar\nnext line\n";
|
||||
|
||||
for (i, ch) in text.chars().enumerate() {
|
||||
if ch != '\n' {
|
||||
let range = vim_a_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, 0.into()..text.len().into());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_inner_paragraph_two_paragraphs() {
|
||||
let text = "first line\nof first para\n\nsecond para line\n";
|
||||
let blank_index = text.find("\n\n").unwrap();
|
||||
let second_start = blank_index + 2;
|
||||
|
||||
for (i, ch) in text.chars().take(blank_index).enumerate() {
|
||||
if ch != '\n' {
|
||||
let range = vim_inner_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, 0.into()..blank_index.into());
|
||||
}
|
||||
}
|
||||
|
||||
for (i, ch) in text.chars().enumerate().skip(second_start) {
|
||||
if ch != '\n' {
|
||||
let range = vim_inner_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, second_start.into()..text.len().into());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_inner_paragraph_three_paragraphs() {
|
||||
let text = "first\n\nsecond\n\nthird\n";
|
||||
let (first_blank, second_blank) = {
|
||||
let mut it = text.match_indices("\n\n");
|
||||
(it.next().unwrap().0, it.next().unwrap().0)
|
||||
};
|
||||
let second_start = first_blank + 2;
|
||||
let third_start = second_blank + 2;
|
||||
|
||||
for (i, ch) in text.chars().take(first_blank).enumerate() {
|
||||
if ch != '\n' {
|
||||
let range = vim_inner_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, 0.into()..first_blank.into());
|
||||
}
|
||||
}
|
||||
|
||||
for (i, ch) in text
|
||||
.chars()
|
||||
.enumerate()
|
||||
.skip(second_start)
|
||||
.take(second_blank - second_start)
|
||||
{
|
||||
if ch != '\n' {
|
||||
let range = vim_inner_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, second_start.into()..second_blank.into());
|
||||
}
|
||||
}
|
||||
|
||||
for (i, ch) in text.chars().enumerate().skip(third_start) {
|
||||
if ch != '\n' {
|
||||
let range = vim_inner_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, third_start.into()..text.len().into());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_a_paragraph_two_paragraphs() {
|
||||
let text = "first line\nof first para\n\nsecond para line\n";
|
||||
let blank_index = text.find("\n\n").unwrap();
|
||||
|
||||
for (i, ch) in text.chars().take(blank_index).enumerate() {
|
||||
if ch != '\n' {
|
||||
let range = vim_a_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, 0.into()..(blank_index + 1).into());
|
||||
}
|
||||
}
|
||||
|
||||
let second_range_start = (blank_index + 1).into();
|
||||
let second_range_end = text.len().into();
|
||||
let second_start = blank_index + 2;
|
||||
|
||||
for (i, ch) in text.chars().enumerate().skip(second_start) {
|
||||
if ch != '\n' {
|
||||
let range = vim_a_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, second_range_start..second_range_end);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_a_paragraph_three_paragraphs() {
|
||||
let text = "first\n\nsecond\n\nthird\n";
|
||||
let (first_blank, second_blank) = {
|
||||
let mut it = text.match_indices("\n\n");
|
||||
(it.next().unwrap().0, it.next().unwrap().0)
|
||||
};
|
||||
let second_start = first_blank + 2;
|
||||
let third_start = second_blank + 2;
|
||||
|
||||
for (i, ch) in text.chars().take(first_blank).enumerate() {
|
||||
if ch != '\n' {
|
||||
let range = vim_a_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, 0.into()..(first_blank + 1).into());
|
||||
}
|
||||
}
|
||||
|
||||
for (i, ch) in text
|
||||
.chars()
|
||||
.enumerate()
|
||||
.skip(second_start)
|
||||
.take(second_blank - second_start)
|
||||
{
|
||||
if ch != '\n' {
|
||||
let range = vim_a_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, second_start.into()..(second_blank + 1).into());
|
||||
}
|
||||
}
|
||||
|
||||
let last_range = (second_blank + 1).into()..text.len().into();
|
||||
for (i, ch) in text.chars().enumerate().skip(third_start) {
|
||||
if ch != '\n' {
|
||||
let range = vim_a_paragraph(text, i).unwrap();
|
||||
assert_eq!(range, last_range);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_inner_paragraph_blank_lines() {
|
||||
let text = "first\n\n\nsecond\n";
|
||||
|
||||
for offset in 5..=7 {
|
||||
let range = vim_inner_paragraph(text, offset).unwrap();
|
||||
assert_eq!(range, 6.into()..7.into());
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_a_paragraph_blank_lines() {
|
||||
let text = "first\n\n\nsecond\n";
|
||||
|
||||
for offset in 5..=7 {
|
||||
let range = vim_a_paragraph(text, offset).unwrap();
|
||||
assert_eq!(range, 6.into()..text.len().into());
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_a_paragraph_many_trailing_blank_lines() {
|
||||
let text = "first\n\n\nsecond\n\n\n\n\nthird";
|
||||
|
||||
for offset in 0..=4 {
|
||||
let range = vim_a_paragraph(text, offset).unwrap();
|
||||
assert_eq!(range, 0.into()..7.into());
|
||||
}
|
||||
|
||||
for offset in 8..=13 {
|
||||
let range = vim_a_paragraph(text, offset).unwrap();
|
||||
assert_eq!(range, 8.into()..18.into());
|
||||
}
|
||||
|
||||
for offset in 19..=23 {
|
||||
let range = vim_a_paragraph(text, offset).unwrap();
|
||||
assert_eq!(range, 15.into()..24.into());
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vim_paragraph_lines_with_spaces_included() {
|
||||
// Despite being invisible, a line containing spaces still counts as "content".
|
||||
let text = "first\n\n \nsecond";
|
||||
|
||||
let range = vim_a_paragraph(text, 3).unwrap();
|
||||
assert_eq!(range, 0.into()..6.into());
|
||||
let range = vim_a_paragraph(text, 14).unwrap();
|
||||
assert_eq!(range, 6.into()..18.into());
|
||||
}
|
||||
Reference in New Issue
Block a user