bo4e_core/enums/
rounding_mode.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[non_exhaustive]
12pub enum RoundingMode {
13 #[serde(rename = "KEINE")]
15 None,
16
17 #[serde(rename = "KAUFMAENNISCH")]
19 Commercial,
20
21 #[serde(rename = "ABRUNDEN")]
23 Floor,
24
25 #[serde(rename = "AUFRUNDEN")]
27 Ceiling,
28}
29
30impl RoundingMode {
31 pub fn german_name(&self) -> &'static str {
33 match self {
34 Self::None => "Keine Rundung",
35 Self::Commercial => "Kaufmännische Rundung",
36 Self::Floor => "Abrunden",
37 Self::Ceiling => "Aufrunden",
38 }
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn test_serialize() {
48 assert_eq!(
49 serde_json::to_string(&RoundingMode::Commercial).unwrap(),
50 r#""KAUFMAENNISCH""#
51 );
52 }
53
54 #[test]
55 fn test_roundtrip() {
56 for mode in [
57 RoundingMode::None,
58 RoundingMode::Commercial,
59 RoundingMode::Floor,
60 RoundingMode::Ceiling,
61 ] {
62 let json = serde_json::to_string(&mode).unwrap();
63 let parsed: RoundingMode = serde_json::from_str(&json).unwrap();
64 assert_eq!(mode, parsed);
65 }
66 }
67}