@@ -18,6 +18,99 @@ class Benchmark {
18
18
}
19
19
}
20
20
21
+ @JS enum APIResult {
22
+ case success( String )
23
+ case failure( Int )
24
+ case flag( Bool )
25
+ case rate( Float )
26
+ case precise( Double )
27
+ case info
28
+ }
29
+
30
+ @JS class EnumRoundtrip {
31
+ @JS init ( ) { }
32
+
33
+ @JS func take( _ value: APIResult ) { }
34
+ @JS func makeSuccess( ) -> APIResult {
35
+ return . success( " Hello, world " )
36
+ }
37
+ @JS func makeFailure( ) -> APIResult {
38
+ return . failure( 42 )
39
+ }
40
+ @JS func makeFlag( ) -> APIResult {
41
+ return . flag( true )
42
+ }
43
+ @JS func makeRate( ) -> APIResult {
44
+ return . rate( 0.5 )
45
+ }
46
+ @JS func makePrecise( ) -> APIResult {
47
+ return . precise( 0.5 )
48
+ }
49
+ @JS func makeInfo( ) -> APIResult {
50
+ return . info
51
+ }
52
+
53
+ @JS func roundtrip( _ result: APIResult ) -> APIResult {
54
+ return result
55
+ }
56
+ }
57
+
58
+ @JS
59
+ enum ComplexResult {
60
+ case success( String )
61
+ case error( String , Int )
62
+ case location( Double , Double , String )
63
+ case status( Bool , Int , String )
64
+ case coordinates( Double , Double , Double )
65
+ case comprehensive( Bool , Bool , Int , Int , Double , Double , String , String , String )
66
+ case info
67
+ }
68
+
69
+ @JS class ComplexResultRoundtrip {
70
+ @JS init ( ) { }
71
+
72
+ @JS func take( _ value: ComplexResult ) { }
73
+
74
+ @JS func makeSuccess( ) -> ComplexResult {
75
+ return . success( " Hello, world " )
76
+ }
77
+
78
+ @JS func makeError( ) -> ComplexResult {
79
+ return . error( " Network timeout " , 503 )
80
+ }
81
+
82
+ @JS func makeLocation( ) -> ComplexResult {
83
+ return . location( 37.7749 , - 122.4194 , " San Francisco " )
84
+ }
85
+
86
+ @JS func makeStatus( ) -> ComplexResult {
87
+ return . status( true , 200 , " OK " )
88
+ }
89
+
90
+ @JS func makeCoordinates( ) -> ComplexResult {
91
+ return . coordinates( 10.5 , 20.3 , 30.7 )
92
+ }
93
+
94
+ @JS func makeComprehensive( ) -> ComplexResult {
95
+ return . comprehensive( true , false , 42 , 100 , 3.14 , 2.718 , " Hello " , " World " , " Test " )
96
+ }
97
+
98
+ @JS func makeInfo( ) -> ComplexResult {
99
+ return . info
100
+ }
101
+
102
+ @JS func roundtrip( _ result: ComplexResult ) -> ComplexResult {
103
+ return result
104
+ }
105
+ }
106
+ @JS class StringRoundtrip {
107
+ @JS init ( ) { }
108
+ @JS func take( _ value: String ) { }
109
+ @JS func make( ) -> String {
110
+ return " Hello, world "
111
+ }
112
+ }
113
+
21
114
@JS func run( ) {
22
115
23
116
let call = Benchmark ( " Call " )
0 commit comments