segul 0.23.2

An ultrafast and memory-efficient tool for phylogenomics
Documentation
mod utils;

use std::env;

use predicates::Predicate;

use segul::helper::finder::SeqFileFinder;
use segul::helper::types::InputFmt;

macro_rules! test_filter {
    ($test: ident, $arg: expr_2021, $val: expr_2021, $output: expr_2021, $res: expr_2021) => {
        #[test]
        fn $test() {
            initiate_cmd!(cmd, "align", "filter", "tests/files/long-aln/", tmp_dir);
            cmd.arg($arg).arg($val).assert().success();
            test_results!($res, tmp_dir, $output, Nexus);
        }
    };
}

test_filter! {test_filter_percent, "--percent", "0.5", "Align-Filter_50p",4}
test_filter! {test_min_pinf, "--min-pinf", "3","Align-Filter_3pinf", 1}
test_filter! {test_max_pinf, "--max-pinf", "3","Align-Filter_3pinf", 3}
test_filter! {test_percent_percent_inf, "--percent-inf", ".5","Align-Filter_50percent_pinf", 4}
test_filter! {test_min_len, "--min-len", "25", "Align-Filter_25bp", 4}
test_filter! {test_max_len, "--max-len", "30", "Align-Filter_30bp", 4}

#[test]
fn test_filter_missing_data() {
    initiate_cmd!(cmd, "align", "filter", "tests/files/gappy/", tmp_dir);
    cmd.arg("--missing-data").arg("0.25").assert().success();
    let output = tmp_dir.path().join("Align-Filter_25percent_missing");
    test_results!(3, tmp_dir, output, Nexus);
}

#[test]
#[should_panic]
fn test_filter_panic() {
    initiate_cmd!(cmd, "align", "filter", "tests/files/long-aln/", tmp_dir);
    let output = tmp_dir.path().join("concat_50p");
    cmd.arg("--min-len")
        .arg("27")
        .arg("-o")
        .arg(&output)
        .assert()
        .success();
    tmp_dir.close().unwrap();
}