mod shared;
use shared::fixtures::{
PrintTest,
ErrorTest,
};
use shared::mock_ui::Print;
use add_ed::error::EdError;
#[test]
fn number() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec!["1"],
expected_selection: (1,1),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![
Print{
text: vec![
"a\n".to_string(),
],
n: false,
l: false,
}
],
expected_history_tags: vec![],
}.run()
}
#[test]
fn number_nobuffer() {
ErrorTest{
init_buffer: vec![],
command_input: vec!["1"],
expected_error: EdError::IndexTooBig{index:1,buffer_len:0},
}.run()
}
#[test]
fn last_line() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec!["$"],
expected_selection: (4,4),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![
Print{
text: vec![
"d\n".to_string(),
],
n: false,
l: false,
}
],
expected_history_tags: vec![],
}.run()
}
#[test]
fn last_line_nobuffer() {
ErrorTest{
init_buffer: vec![],
command_input: vec!["$"],
expected_error: EdError::Line0Invalid,
}.run()
}
#[test]
fn current_line() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec![".,.#"],
expected_selection: (1,4),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![],
expected_history_tags: vec![],
}.run()
}
#[test]
fn pattern() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec!["1#", "/c"],
expected_selection: (3,3),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![
Print{
text: vec![
"c\n".to_string(),
],
n: false,
l: false,
}
],
expected_history_tags: vec![],
}.run()
}
#[test]
fn pattern_terminated() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec!["1#", "/c/"],
expected_selection: (3,3),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![
Print{
text: vec![
"c\n".to_string(),
],
n: false,
l: false,
}
],
expected_history_tags: vec![],
}.run()
}
#[test]
fn revpattern() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec!["4#", "?c"],
expected_selection: (3,3),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![
Print{
text: vec![
"c\n".to_string(),
],
n: false,
l: false,
}
],
expected_history_tags: vec![],
}.run()
}
#[test]
fn revpattern_terminated() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec!["4#", "?c?"],
expected_selection: (3,3),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![
Print{
text: vec![
"c\n".to_string(),
],
n: false,
l: false,
}
],
expected_history_tags: vec![],
}.run()
}
#[test]
fn offset_default() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec!["+,-"],
expected_selection: (2,3),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![
Print{
text: vec![
"b\n".to_string(),
"c\n".to_string(),
],
n: false,
l: false,
}
],
expected_history_tags: vec![],
}.run()
}
#[test]
fn offset_fancy() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec!["/b/+,"],
expected_selection: (3,4),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![
Print{
text: vec![
"c\n".to_string(),
"d\n".to_string(),
],
n: false,
l: false,
}
],
expected_history_tags: vec![],
}.run()
}
#[test]
fn tag() {
PrintTest{
init_buffer: vec!["a","b","c","d"],
init_clipboard: vec![],
command_input: vec!["3kx", "'x"],
expected_selection: (3,3),
expected_buffer: vec!["a","b","c","d"],
expected_buffer_saved: true,
expected_clipboard: vec![],
expected_prints: vec![
Print{
text: vec![
"c\n".to_string(),
],
n: false,
l: false,
}
],
expected_history_tags: vec![],
}.run()
}
#[test]
fn tag_invalid() {
ErrorTest{
init_buffer: vec!["a","b","c"],
command_input: vec!["2kx", "'"],
expected_error: EdError::IndexUnfinished("'".to_string()),
}.run()
}