use serde::{Deserialize, Serialize};
pub fn cell_key(sheet: &str, addr: &str) -> String {
format!("{sheet}!{addr}")
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
pub struct RangeRef {
pub sheet: String,
pub start: String,
pub end: String,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn cell_key_builds_sheet_bang_addr() {
assert_eq!(cell_key("2_Constants", "C17"), "2_Constants!C17");
}
#[test]
fn range_ref_round_trips_through_serde() {
let r = RangeRef {
sheet: "5_Quantities".to_string(),
start: "B2".to_string(),
end: "B10".to_string(),
};
let v = serde_json::to_value(&r).expect("serialize");
assert_eq!(v["sheet"], "5_Quantities");
assert_eq!(v["start"], "B2");
assert_eq!(v["end"], "B10");
let back: RangeRef = serde_json::from_value(v).expect("deserialize");
assert_eq!(r, back);
}
}