1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
include!("bigtools.rs");
#[cfg(test)]
mod test {
use bigtools::utils::cli::compat_args;
use clap::Parser;
use crate::{CliCommands, SubCommands};
#[test]
fn verify_cli_bigwigvaluesoverbed() {
use clap::CommandFactory;
CliCommands::command().debug_assert();
let subcommand = |args: &str| {
let args = args.split_whitespace();
let cli = CliCommands::try_parse_from(compat_args(args.map(|a| a.into())))
.map_err(|e| e.print())
.unwrap();
match cli {
CliCommands::SubCommands(subcommand) => subcommand,
CliCommands::Bigtools { .. } => panic!("Expected subcommand, parsed applet."),
}
};
let _applet = |args: &str| {
let args = args.split_whitespace();
let cli = CliCommands::try_parse_from(compat_args(args.map(|a| a.into()))).unwrap();
match cli {
CliCommands::Bigtools { command } => command,
CliCommands::SubCommands(..) => panic!("Expected applet, parsed subcommand."),
}
};
let args = "bigWigValuesOverBed a b c";
let cli = subcommand(args);
let _args = match cli {
SubCommands::BigWigValuesOverBed { args } => {
assert_eq!(args.bigwig, "a");
assert_eq!(args.bedin, "b");
assert_eq!(args.output, "c");
args
}
_ => panic!(),
};
/*
let args_orig = args;
macro_rules! assert_args {
(inner; $cli: expr, $args_comp:ident; $inner:block) => {
let args_cli = match $cli {
SubCommands::BigWigValuesOverBed { args } => args,
_ => panic!(),
};
#[allow(unused_mut)]
let mut $args_comp = args_orig.clone();
$inner
assert_eq!(args_cli, $args_comp);
};
($args:expr, |$args_comp:ident| $inner:block) => {
let cli = subcommand($args);
assert_args!(inner; cli, $args_comp; $inner);
let args = &format!("bigtools {}", $args);
let cli = applet(args);
assert_args!(inner; cli, $args_comp; $inner);
}
}
let args = "bigWigValuesOverBed a b c";
assert_args!(args, |args_comp| {
args_comp.chrom = Some("chr1".to_string());
});
*/
}
}