us_state_info/
lib.rs

1pub mod states;
2use std::fmt::Display;
3
4pub use states::State;
5
6#[derive(Debug, Clone)]
7pub struct ConversionError;
8
9impl Display for ConversionError {
10    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11        write!(f, "Provided value was not an abbreviation or state name of the USA")
12    }
13}
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18
19    #[test]
20    fn test_display() {
21        assert_eq!(State::California.to_string(), "California");
22        assert_eq!(State::NewYork.to_string(), "New York");
23    }
24
25    #[test]
26    fn test_abbreviation() {
27        assert_eq!(State::California.abbreviation(), "CA");
28        assert_eq!(State::NewYork.abbreviation(), "NY");
29    }
30
31    #[test]
32    #[cfg(feature = "serde_abbreviation")]
33    fn test_serialize_abbreviation() {
34        let state = State::California;
35        let serialized = serde_json::to_string(&state).unwrap();
36        assert_eq!(serialized, "\"CA\"");
37    }
38
39    #[test]
40    #[cfg(all(feature = "serde1", not(feature = "serde_abbreviation")))]
41    fn test_serialize_display() {
42        let state = State::California;
43        let serialized = serde_json::to_string(&state).unwrap();
44        assert_eq!(serialized, "\"California\"");
45    }
46
47    #[test]
48    #[cfg(feature = "serde_abbreviation")]
49    fn test_deserialize_abbreviation() {
50        let deserialized: State = serde_json::from_str("\"CA\"").unwrap();
51        assert_eq!(deserialized, State::California);
52    }
53
54    #[test]
55    #[cfg(all(feature = "serde1", not(feature = "serde_abbreviation")))]
56    fn test_deserialize_display() {
57        let deserialized: State = serde_json::from_str("\"California\"").unwrap();
58        assert_eq!(deserialized, State::California);
59    }
60}