1 #![allow(dead_code)]
2 
3 use zvariant::Type;
4 use zvariant_derive::{DeserializeDict, SerializeDict, Type, TypeDict};
5 
6 #[test]
derive_unit_struct()7 fn derive_unit_struct() {
8     #[derive(Type)]
9     struct FooF(f64);
10 
11     assert_eq!(FooF::signature(), "d")
12 }
13 
14 #[test]
derive_struct()15 fn derive_struct() {
16     #[derive(Type)]
17     struct TestStruct {
18         name: String,
19         age: u8,
20         blob: Vec<u8>,
21     }
22 
23     assert_eq!(TestStruct::signature(), "(syay)")
24 }
25 
26 #[test]
derive_enum()27 fn derive_enum() {
28     #[repr(u32)]
29     #[derive(Type)]
30     enum RequestNameFlags {
31         AllowReplacement = 0x01,
32         ReplaceExisting = 0x02,
33         DoNotQueue = 0x04,
34     }
35 
36     assert_eq!(RequestNameFlags::signature(), "u")
37 }
38 
39 #[test]
derive_dict()40 fn derive_dict() {
41     #[derive(SerializeDict, DeserializeDict, TypeDict)]
42     #[zvariant(deny_unknown_fields)]
43     struct Test {
44         field_a: Option<u32>,
45         #[zvariant(rename = "field-b")]
46         field_b: String,
47         field_c: Vec<u8>,
48     }
49 
50     assert_eq!(Test::signature(), "a{sv}")
51 }
52