use std::fmt;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[non_exhaustive]
pub enum SelectorOperator {
In,
NotIn,
Exists,
DoesNotExist,
}
impl fmt::Display for SelectorOperator {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::In => f.write_str("In"),
Self::NotIn => f.write_str("NotIn"),
Self::Exists => f.write_str("Exists"),
Self::DoesNotExist => f.write_str("DoesNotExist"),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn display_and_serde_use_operator_names() {
for (operator, name) in [
(SelectorOperator::In, "In"),
(SelectorOperator::NotIn, "NotIn"),
(SelectorOperator::Exists, "Exists"),
(SelectorOperator::DoesNotExist, "DoesNotExist"),
] {
assert_eq!(operator.to_string(), name);
let json = serde_json::to_string(&operator).unwrap();
let back: SelectorOperator = serde_json::from_str(&json).unwrap();
assert_eq!(back, operator);
}
}
}