#[derive(Clone, Copy, Debug, Default, PartialEq, clap::ValueEnum)]
pub enum TriStateFilter {
#[default]
#[value(name = "-1")]
All,
#[value(name = "0")]
Disabled,
#[value(name = "1")]
Enabled,
}
impl TriStateFilter {
pub fn as_i8(self) -> i8 {
match self {
Self::All => -1,
Self::Disabled => 0,
Self::Enabled => 1,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, clap::ValueEnum)]
pub enum OrderDirection {
#[value(name = "asc")]
Asc,
#[value(name = "desc")]
Desc,
}
#[derive(Clone, Copy, Debug, Default, PartialEq, clap::ValueEnum)]
pub enum OutputFormat {
#[default]
#[value(name = "json")]
Json,
#[value(name = "csv")]
Csv,
#[value(name = "tsv")]
Tsv,
}
#[derive(Clone, Copy, Debug, PartialEq, clap::ValueEnum)]
pub enum SummaryGroup {
#[value(name = "ticker")]
Ticker,
#[value(name = "day")]
Day,
#[value(name = "ticker,day")]
TickerDay,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn tri_state_filter_as_i8() {
assert_eq!(TriStateFilter::All.as_i8(), -1);
assert_eq!(TriStateFilter::Disabled.as_i8(), 0);
assert_eq!(TriStateFilter::Enabled.as_i8(), 1);
}
#[test]
fn tri_state_filter_default_is_all() {
assert_eq!(TriStateFilter::default(), TriStateFilter::All);
}
#[test]
fn output_format_default_is_json() {
assert_eq!(OutputFormat::default(), OutputFormat::Json);
}
}