use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
pub enum Effort {
Low,
Medium,
High,
}
impl From<Effort> for brazen::ReasoningEffort {
fn from(effort: Effort) -> Self {
match effort {
Effort::Low => brazen::ReasoningEffort::Low,
Effort::Medium => brazen::ReasoningEffort::Medium,
Effort::High => brazen::ReasoningEffort::High,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn serde_speaks_lowercase() {
for (level, word) in [
(Effort::Low, "low"),
(Effort::Medium, "medium"),
(Effort::High, "high"),
] {
assert_eq!(serde_yaml_ng::to_string(&level).unwrap().trim(), word);
let back: Effort = serde_yaml_ng::from_str(word).unwrap();
assert_eq!(back, level);
}
}
#[test]
fn converts_level_for_level_to_the_adapter_vocabulary() {
assert_eq!(
brazen::ReasoningEffort::from(Effort::Low),
brazen::ReasoningEffort::Low
);
assert_eq!(
brazen::ReasoningEffort::from(Effort::Medium),
brazen::ReasoningEffort::Medium
);
assert_eq!(
brazen::ReasoningEffort::from(Effort::High),
brazen::ReasoningEffort::High
);
}
}