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