#[allow(non_camel_case_types)]
#[derive(Debug, PartialEq, Clone, Copy, strum::Display)]
pub enum MarketData {
BAR_1M,
BAR_5M,
BAR_10M,
BAR_1H,
BAR_D,
BAR_W,
BAR_M,
TIC,
}
impl MarketData {
pub fn name(&self) -> String {
match self {
Self::BAR_1M => "BAR_1M".to_string(),
Self::BAR_5M => "BAR_5M".to_string(),
Self::BAR_10M => "BAR_10M".to_string(),
Self::BAR_1H => "BAR_1H".to_string(),
Self::BAR_D => "BAR_D".to_string(),
Self::BAR_W => "BAR_W".to_string(),
Self::BAR_M => "BAR_M".to_string(),
Self::TIC => "TIC".to_string(),
}
}
}
impl From<&str> for MarketData {
fn from(value: &str) -> Self {
match value.to_uppercase().as_str() {
"1M" => MarketData::BAR_1M,
"5M" => MarketData::BAR_5M,
"10M" => MarketData::BAR_10M,
"1H" => MarketData::BAR_1H,
"D" => MarketData::BAR_D,
"W" => MarketData::BAR_W,
"M" => MarketData::BAR_M,
"BAR_1M" => MarketData::BAR_1M,
"BAR_5M" => MarketData::BAR_5M,
"BAR_10M" => MarketData::BAR_10M,
"BAR_1H" => MarketData::BAR_1H,
"BAR_D" => MarketData::BAR_D,
"BAR_W" => MarketData::BAR_W,
"BAR_M" => MarketData::BAR_M,
"TIC" => MarketData::TIC,
_ => panic!("Invalid value for MarketData: {value}"),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn display() {
assert_eq!(MarketData::TIC.to_string(), "TIC");
assert_eq!(MarketData::BAR_1M.to_string(), "BAR_1M");
assert_eq!(MarketData::BAR_5M.to_string(), "BAR_5M");
assert_eq!(MarketData::BAR_10M.to_string(), "BAR_10M");
assert_eq!(MarketData::BAR_1H.to_string(), "BAR_1H");
assert_eq!(MarketData::BAR_D.to_string(), "BAR_D");
assert_eq!(MarketData::BAR_W.to_string(), "BAR_W");
assert_eq!(MarketData::BAR_M.to_string(), "BAR_M");
}
#[test]
fn name() {
assert_eq!(MarketData::TIC.name(), "TIC");
assert_eq!(MarketData::BAR_1M.name(), "BAR_1M");
assert_eq!(MarketData::BAR_5M.name(), "BAR_5M");
assert_eq!(MarketData::BAR_10M.name(), "BAR_10M");
assert_eq!(MarketData::BAR_1H.name(), "BAR_1H");
assert_eq!(MarketData::BAR_D.name(), "BAR_D");
assert_eq!(MarketData::BAR_W.name(), "BAR_W");
assert_eq!(MarketData::BAR_M.name(), "BAR_M");
}
#[test]
fn from_str() {
assert_eq!(MarketData::TIC, "TIC".into());
assert_eq!(MarketData::BAR_1M, "BAR_1M".into());
assert_eq!(MarketData::BAR_10M, "BAR_10M".into());
assert_eq!(MarketData::BAR_1H, "BAR_1H".into());
assert_eq!(MarketData::BAR_D, "BAR_D".into());
assert_eq!(MarketData::BAR_W, "BAR_W".into());
assert_eq!(MarketData::BAR_M, "BAR_M".into());
assert_eq!(MarketData::BAR_1M, "1M".into());
assert_eq!(MarketData::BAR_10M, "10M".into());
assert_eq!(MarketData::BAR_1H, "1H".into());
assert_eq!(MarketData::BAR_D, "D".into());
assert_eq!(MarketData::BAR_W, "W".into());
assert_eq!(MarketData::BAR_M, "M".into());
}
}