Files
galaxy/crates/vim/src/text_objects/quote_tests.rs
T

115 lines
3.2 KiB
Rust

use super::*;
use crate::vim::QuoteType;
#[test]
fn test_a_quote() {
assert_eq!(vim_a_quote("", 0, QuoteType::Single), None);
assert_eq!(
vim_a_quote("'foo'", 1, QuoteType::Single).unwrap(),
0.into()..5.into()
);
assert_eq!(
vim_a_quote("'foo'", 0, QuoteType::Single).unwrap(),
0.into()..5.into()
);
assert_eq!(
vim_a_quote("'foo'", 4, QuoteType::Single).unwrap(),
0.into()..5.into()
);
assert_eq!(vim_a_quote("'foo'", 1, QuoteType::Double), None);
assert_eq!(vim_a_quote("'foo' ", 5, QuoteType::Single), None);
assert_eq!(
vim_a_quote("foo 'foo' ", 0, QuoteType::Single).unwrap(),
5.into()..10.into()
);
assert_eq!(
vim_a_quote(r#"foo "" "#, 0, QuoteType::Double).unwrap(),
5.into()..7.into()
);
// 0000000000111111111
// 0123456789012345678
let line = " 'foo' 'bar' 'baz";
for i in 0..=6 {
assert_eq!(
vim_a_quote(line, i, QuoteType::Single).unwrap(),
2.into()..7.into()
)
}
for i in 7..=8 {
assert_eq!(
vim_a_quote(line, i, QuoteType::Single).unwrap(),
6.into()..10.into()
)
}
for i in 9..=13 {
assert_eq!(
vim_a_quote(line, i, QuoteType::Single).unwrap(),
9.into()..14.into()
)
}
assert_eq!(
vim_a_quote(line, 14, QuoteType::Single).unwrap(),
13.into()..16.into()
);
for i in 15..=18 {
assert_eq!(vim_a_quote(line, i, QuoteType::Single), None)
}
}
#[test]
fn test_inner_quote() {
assert_eq!(vim_inner_quote("", 0, QuoteType::Single), None);
assert_eq!(
vim_inner_quote("`foo`", 1, QuoteType::Backtick).unwrap(),
1.into()..4.into()
);
assert_eq!(
vim_inner_quote("`foo`", 0, QuoteType::Backtick).unwrap(),
1.into()..4.into()
);
assert_eq!(
vim_inner_quote("'foo'", 4, QuoteType::Single).unwrap(),
1.into()..4.into()
);
assert_eq!(vim_inner_quote("'foo'", 1, QuoteType::Double), None);
assert_eq!(vim_inner_quote("'foo' ", 5, QuoteType::Single), None);
assert_eq!(
vim_inner_quote("foo 'foo' ", 0, QuoteType::Single).unwrap(),
6.into()..9.into()
);
assert_eq!(
vim_inner_quote(r#"foo "" "#, 0, QuoteType::Double).unwrap(),
6.into()..6.into()
);
// 0000000000111111111
// 0123456789012345678
let line = " 'foo' 'bar' 'baz";
for i in 0..=6 {
assert_eq!(
vim_inner_quote(line, i, QuoteType::Single).unwrap(),
3.into()..6.into()
)
}
for i in 7..=8 {
assert_eq!(
vim_inner_quote(line, i, QuoteType::Single).unwrap(),
7.into()..9.into()
)
}
for i in 9..=13 {
assert_eq!(
vim_inner_quote(line, i, QuoteType::Single).unwrap(),
10.into()..13.into()
)
}
assert_eq!(
vim_inner_quote(line, 14, QuoteType::Single).unwrap(),
14.into()..15.into()
);
for i in 15..=18 {
assert_eq!(vim_inner_quote(line, i, QuoteType::Single), None)
}
}