• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //! First tests for new `dissolve` functionality
2 use serde::{Serialize, Deserialize};
3 use derive_getters::Dissolve;
4 
5 #[derive(Dissolve, Serialize, Deserialize)]
6 struct Number {
7     num: u64,
8 }
9 
10 #[derive(Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
11 struct Inner {
12     a: u64,
13     b: i64,
14 }
15 
16 #[derive(Dissolve, Serialize, Deserialize)]
17 struct ManyStuff {
18     name: String,
19     price: f64,
20     count: usize,
21     inner: Inner,
22 }
23 
24 #[derive(Dissolve, Serialize, Deserialize)]
25 #[dissolve(rename = "shatter")]
26 struct LotsOfStuff {
27     name: String,
28     price: f64,
29     count: usize,
30     inner: Inner,
31 }
32 
33 impl LotsOfStuff {
dissolve(&self) -> f6434     fn dissolve(&self) -> f64 {
35         self.inner.b as f64 * self.price
36     }
37 }
38 
main()39 fn main() {
40     let n = Number { num: 64 };
41     let number = n.dissolve();
42     assert!(number == 64);
43 
44     let inner = Inner { a: 22, b: -33 };
45     let stuff = ManyStuff {
46         name: "Hogie".to_owned(),
47         price: 123.4f64,
48         count: 100,
49         inner,
50     };
51     let (n, p, c, i) = stuff.dissolve();
52     assert!(n == "Hogie");
53     assert!(p == 123.4f64);
54     assert!(c == 100);
55     assert!(i == inner);
56 
57     //let _ = stuff.dissolve();
58 
59     let stuff = LotsOfStuff {
60         name: "Hogie".to_owned(),
61         price: 123.4f64,
62         count: 100,
63         inner,
64     };
65     let (n, p, c, i) = stuff.shatter();
66     assert!(n == "Hogie");
67     assert!(p == 123.4f64);
68     assert!(c == 100);
69     assert!(i == inner);
70 
71     //let _ = stuff.shatter();
72 }
73