@@ -5,3 +5,83 @@ mod tests;
5
5
#[ allow( dead_code) ]
6
6
#[ cfg( test) ]
7
7
mod serde_test;
8
+
9
+ #[ derive( Debug , Clone , gents_derives:: TS ) ]
10
+ #[ ts( file_name = "a.ts" , rename_all = "camelCase" ) ]
11
+ pub enum VerticalAlignment {
12
+ Center ,
13
+ Top ,
14
+ Bottom ,
15
+ Justify ,
16
+ Distributed ,
17
+ }
18
+
19
+ #[ test]
20
+ fn test_unit_enum_serde ( ) {
21
+ let vertical_alignment = VerticalAlignment :: Center ;
22
+ let json = serde_json:: to_string ( & vertical_alignment) . unwrap ( ) ;
23
+ assert_eq ! ( json, "\" center\" " ) ;
24
+ let vertical_alignment = serde_json:: from_str :: < VerticalAlignment > ( "\" center\" " ) . unwrap ( ) ;
25
+ assert ! ( matches!( vertical_alignment, VerticalAlignment :: Center ) ) ;
26
+ }
27
+
28
+ #[ derive( Debug , Clone , gents_derives:: TS ) ]
29
+ #[ ts( file_name = "b.ts" , rename_all = "camelCase" ) ]
30
+ pub struct User {
31
+ pub id : u32 ,
32
+ pub name : String ,
33
+ }
34
+
35
+ #[ test]
36
+ fn test_struct_serde ( ) {
37
+ let user = User {
38
+ id : 1 ,
39
+ name : "test" . to_string ( ) ,
40
+ } ;
41
+ let json = serde_json:: to_string ( & user) . unwrap ( ) ;
42
+ assert_eq ! ( json, "{\" id\" :1,\" name\" :\" test\" }" ) ;
43
+ let user = serde_json:: from_str :: < User > ( "{\" id\" :1,\" name\" :\" test\" }" ) . unwrap ( ) ;
44
+ assert_eq ! ( user. id, 1 ) ;
45
+ assert_eq ! ( user. name, "test" ) ;
46
+ }
47
+
48
+ #[ derive( Debug , Clone , gents_derives:: TS ) ]
49
+ #[ ts( file_name = "c.ts" , rename_all = "camelCase" , tag = "type" ) ]
50
+ pub enum TestEnum {
51
+ Center ,
52
+ Top ,
53
+ Bottom ,
54
+ Justify ,
55
+ Distributed ,
56
+ Unknown ( User ) ,
57
+ }
58
+
59
+ #[ test]
60
+ fn test_struct_tagged_enum_serde ( ) {
61
+ let center = TestEnum :: Center ;
62
+ let json = serde_json:: to_string ( & center) . unwrap ( ) ;
63
+ assert_eq ! ( json, "\" center\" " ) ;
64
+ let center = serde_json:: from_str :: < TestEnum > ( "\" center\" " ) . unwrap ( ) ;
65
+ assert ! ( matches!( center, TestEnum :: Center ) ) ;
66
+
67
+ let user = TestEnum :: Unknown ( User {
68
+ id : 1 ,
69
+ name : "test" . to_string ( ) ,
70
+ } ) ;
71
+ let json = serde_json:: to_string ( & user) . unwrap ( ) ;
72
+ assert_eq ! (
73
+ json,
74
+ "{\" type\" :\" unknown\" ,\" value\" :{\" id\" :1,\" name\" :\" test\" }}"
75
+ ) ;
76
+ let user = serde_json:: from_str :: < TestEnum > (
77
+ "{\" type\" :\" unknown\" ,\" value\" :{\" id\" :1,\" name\" :\" test\" }}" ,
78
+ )
79
+ . unwrap ( ) ;
80
+ match user {
81
+ TestEnum :: Unknown ( user) => {
82
+ assert_eq ! ( user. id, 1 ) ;
83
+ assert_eq ! ( user. name, "test" ) ;
84
+ }
85
+ _ => panic ! ( ) ,
86
+ }
87
+ }
0 commit comments