Documentation
use corg::{Corg, CorgError};

#[test]
fn default() -> Result<(), CorgError> {
    let result = Corg::default().execute("")?;
    assert_eq!(result, "");
    Ok(())
}

#[test]
fn warn_if_no_blocks() {
    let result = Corg::default().warn_if_no_blocks(true).execute("").is_err();
    assert!(result);
}

#[test]
fn basic_output() -> Result<(), CorgError> {
    let input = "
[[[#!bash
echo 1
]]]
[[[end]]]";
    let result = Corg::default().execute(input)?;

    let expected = "
[[[#!bash
echo 1
]]]
1
[[[end]]]
";

    assert_eq!(expected, result);
    Ok(())
}

#[test]
fn delete_blocks() -> Result<(), CorgError> {
    let input = "
[[[#!bash
echo 1
]]]
[[[end]]]";
    let result = Corg::default().delete_blocks(true).execute(input)?;
    let expected = "\n1\n";

    assert_eq!(expected, result);
    Ok(())
}

#[test]
fn two_blocks() -> Result<(), CorgError> {
    let input = "
[[[#!bash
echo 1
]]]
[[[end]]]
+
[[[#!bash
echo 2
]]]
[[[end]]]
";
    let result = Corg::default().delete_blocks(true).execute(input)?;
    let expected = "\n1\n+\n2\n";

    assert_eq!(expected, result);
    Ok(())
}

#[test]
fn omit_output() -> Result<(), CorgError> {
    let input = "
[[[#!bash
echo 1
]]]
[[[end]]]";
    let result = Corg::default().omit_output(true).execute(input)?;
    let expected = "
[[[#!bash
echo 1
]]]
[[[end]]]
";

    assert_eq!(expected, result);
    Ok(())
}

#[test]
fn check_only() {
    let input = "
[[[#!bash
echo 1
]]]
[[[end]]]";
    let result = Corg::default().check_only(true).execute(input).is_err();
    assert!(result);
}