rust_finprim/amort_dep_tax/
mod.rs1mod structs;
5pub use structs::{AmortizationPeriod, DepreciationPeriod};
6
7mod amort;
9#[cfg(feature = "std")]
10pub use amort::amort_schedule;
11pub use amort::amort_schedule_into;
12
13mod dep;
15#[cfg(feature = "std")]
16pub use dep::{db, macrs, sln, syd};
17pub use dep::{db_into, macrs_into, sln_into, syd_into};
18
19mod tax;
21pub use tax::{progressive_tax, progressive_tax_unchecked};
22
23#[cfg(feature = "serde")]
24#[cfg(test)]
25mod tests {
26 #[cfg(not(feature = "std"))]
27 extern crate std;
28 use super::*;
29 use rust_decimal_macros::*;
30 #[cfg(not(feature = "std"))]
31 use std::prelude::v1::*;
32 #[cfg(not(feature = "std"))]
33 use std::{assert, assert_eq, println, vec};
34
35 #[test]
36 fn test_serde() {
37 let period = AmortizationPeriod::new(1, dec!(100), dec!(50), dec!(850));
38 let serialized = serde_json::to_string(&period).unwrap();
39 let deserialized: AmortizationPeriod = serde_json::from_str(&serialized).unwrap();
40 assert_eq!(period, deserialized);
41 let clone = period.clone();
42 assert_eq!(period, clone);
43
44 let dep_period = DepreciationPeriod::new(1, dec!(100), dec!(900));
45 let serialized = serde_json::to_string(&dep_period).unwrap();
46 let deserialized: DepreciationPeriod = serde_json::from_str(&serialized).unwrap();
47 assert_eq!(dep_period, deserialized);
48 let clone = dep_period.clone();
49 assert_eq!(dep_period, clone);
50 }
51}