|
|
@ -1073,6 +1073,178 @@ mod test {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
|
|
fn test_behaviour_when_moving_to_start_of_next_sub_words() {
|
|
|
|
|
|
|
|
let tests = [
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"NextSubwordStart",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 11)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"next_subword_start",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 5)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(5, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Next_Subword_Start",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 5)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(5, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"NEXT_SUBWORD_START",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 5)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(5, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"next subword start",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 5)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(5, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Next Subword Start",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 5)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(5, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"NEXT SUBWORD START",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 5)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(5, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"next__subword__start",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 6)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 6)),
|
|
|
|
|
|
|
|
(1, Range::new(5, 5), Range::new(6, 15)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Next__Subword__Start",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 6)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 6)),
|
|
|
|
|
|
|
|
(1, Range::new(5, 5), Range::new(6, 15)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"NEXT__SUBWORD__START",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 6)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 6)),
|
|
|
|
|
|
|
|
(1, Range::new(5, 5), Range::new(6, 15)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (sample, scenario) in tests {
|
|
|
|
|
|
|
|
for (count, begin, expected_end) in scenario.into_iter() {
|
|
|
|
|
|
|
|
let range = move_next_sub_word_start(Rope::from(sample).slice(..), begin, count);
|
|
|
|
|
|
|
|
assert_eq!(range, expected_end, "Case failed: [{}]", sample);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
|
|
fn test_behaviour_when_moving_to_end_of_next_sub_words() {
|
|
|
|
|
|
|
|
let tests = [
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"NextSubwordEnd",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 11)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"next subword end",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 12)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Next Subword End",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 12)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"NEXT SUBWORD END",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 12)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"next_subword_end",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 12)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Next_Subword_End",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 12)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"NEXT_SUBWORD_END",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 12)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"next__subword__end",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(5, 5), Range::new(5, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Next__Subword__End",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(5, 5), Range::new(5, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"NEXT__SUBWORD__END",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(0, 0), Range::new(0, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(4, 4), Range::new(4, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(5, 5), Range::new(5, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (sample, scenario) in tests {
|
|
|
|
|
|
|
|
for (count, begin, expected_end) in scenario.into_iter() {
|
|
|
|
|
|
|
|
let range = move_next_sub_word_end(Rope::from(sample).slice(..), begin, count);
|
|
|
|
|
|
|
|
assert_eq!(range, expected_end, "Case failed: [{}]", sample);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
#[test]
|
|
|
|
fn test_behaviour_when_moving_to_start_of_next_long_words() {
|
|
|
|
fn test_behaviour_when_moving_to_start_of_next_long_words() {
|
|
|
|
let tests = [
|
|
|
|
let tests = [
|
|
|
@ -1242,6 +1414,92 @@ mod test {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
|
|
fn test_behaviour_when_moving_to_start_of_previous_sub_words() {
|
|
|
|
|
|
|
|
let tests = [
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"PrevSubwordEnd",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(13, 13), Range::new(14, 11)),
|
|
|
|
|
|
|
|
(1, Range::new(11, 11), Range::new(11, 4)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"prev subword end",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(13, 5)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Prev Subword End",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(13, 5)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"PREV SUBWORD END",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(13, 5)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"prev_subword_end",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(13, 5)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Prev_Subword_End",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(13, 5)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"PREV_SUBWORD_END",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(13, 5)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"prev__subword__end",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(17, 17), Range::new(18, 15)),
|
|
|
|
|
|
|
|
(1, Range::new(13, 13), Range::new(14, 6)),
|
|
|
|
|
|
|
|
(1, Range::new(14, 14), Range::new(15, 6)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Prev__Subword__End",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(17, 17), Range::new(18, 15)),
|
|
|
|
|
|
|
|
(1, Range::new(13, 13), Range::new(14, 6)),
|
|
|
|
|
|
|
|
(1, Range::new(14, 14), Range::new(15, 6)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"PREV__SUBWORD__END",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(17, 17), Range::new(18, 15)),
|
|
|
|
|
|
|
|
(1, Range::new(13, 13), Range::new(14, 6)),
|
|
|
|
|
|
|
|
(1, Range::new(14, 14), Range::new(15, 6)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (sample, scenario) in tests {
|
|
|
|
|
|
|
|
for (count, begin, expected_end) in scenario.into_iter() {
|
|
|
|
|
|
|
|
let range = move_prev_sub_word_start(Rope::from(sample).slice(..), begin, count);
|
|
|
|
|
|
|
|
assert_eq!(range, expected_end, "Case failed: [{}]", sample);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
#[test]
|
|
|
|
fn test_behaviour_when_moving_to_start_of_previous_long_words() {
|
|
|
|
fn test_behaviour_when_moving_to_start_of_previous_long_words() {
|
|
|
|
let tests = [
|
|
|
|
let tests = [
|
|
|
@ -1505,6 +1763,92 @@ mod test {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
|
|
fn test_behaviour_when_moving_to_end_of_previous_sub_words() {
|
|
|
|
|
|
|
|
let tests = [
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"PrevSubwordEnd",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(13, 13), Range::new(14, 11)),
|
|
|
|
|
|
|
|
(1, Range::new(11, 11), Range::new(11, 4)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"prev subword end",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 12)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(12, 4)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Prev Subword End",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 12)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(12, 4)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"PREV SUBWORD END",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 12)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(12, 4)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"prev_subword_end",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 12)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(12, 4)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Prev_Subword_End",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 12)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(12, 4)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"PREV_SUBWORD_END",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(15, 15), Range::new(16, 12)),
|
|
|
|
|
|
|
|
(1, Range::new(12, 12), Range::new(12, 4)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"prev__subword__end",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(17, 17), Range::new(18, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(13, 13), Range::new(13, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(14, 14), Range::new(15, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"Prev__Subword__End",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(17, 17), Range::new(18, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(13, 13), Range::new(13, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(14, 14), Range::new(15, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
"PREV__SUBWORD__END",
|
|
|
|
|
|
|
|
vec![
|
|
|
|
|
|
|
|
(1, Range::new(17, 17), Range::new(18, 13)),
|
|
|
|
|
|
|
|
(1, Range::new(13, 13), Range::new(13, 4)),
|
|
|
|
|
|
|
|
(1, Range::new(14, 14), Range::new(15, 13)),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (sample, scenario) in tests {
|
|
|
|
|
|
|
|
for (count, begin, expected_end) in scenario.into_iter() {
|
|
|
|
|
|
|
|
let range = move_prev_sub_word_end(Rope::from(sample).slice(..), begin, count);
|
|
|
|
|
|
|
|
assert_eq!(range, expected_end, "Case failed: [{}]", sample);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
#[test]
|
|
|
|
fn test_behaviour_when_moving_to_end_of_next_long_words() {
|
|
|
|
fn test_behaviour_when_moving_to_end_of_next_long_words() {
|
|
|
|
let tests = [
|
|
|
|
let tests = [
|
|
|
|