use strum_macros::{Display, EnumString};
#[derive(Debug, EnumString, Display, PartialEq)]
#[strum(ascii_case_insensitive)]
pub enum DataLakeFormat {
#[strum(serialize = "paimon")]
Paimon,
#[strum(serialize = "lance")]
Lance,
#[strum(serialize = "iceberg")]
Iceberg,
}
#[cfg(test)]
mod tests {
use crate::metadata::DataLakeFormat;
use crate::metadata::DataLakeFormat::{Iceberg, Lance, Paimon};
#[test]
fn test_parse() {
let cases = vec![
("paimon", Paimon),
("Paimon", Paimon),
("PAIMON", Paimon),
("lance", Lance),
("LANCE", Lance),
("iceberg", Iceberg),
("ICEBERG", Iceberg),
];
for (raw, expected) in cases {
let parsed = raw.parse::<DataLakeFormat>().unwrap();
assert_eq!(parsed, expected, "failed to parse: {raw}");
}
assert!("unknown".parse::<DataLakeFormat>().is_err());
assert!("".parse::<DataLakeFormat>().is_err());
}
}