@@ -35,6 +35,53 @@ const STR_MESSAGES: &[&str] = &[
3535#[ error( "Custom error" ) ]
3636struct CustomError { }
3737
38+ mod macros {
39+ use tokio:: io:: { DuplexStream , ReadHalf , WriteHalf } ;
40+
41+ use crate :: { send, send_fragmented} ;
42+
43+ use super :: * ;
44+
45+ #[ tokio:: test]
46+ #[ ignore = "Assert that macros compile with split websocketz" ]
47+ async fn macros ( ) {
48+ fn split (
49+ stream : FromTokio < DuplexStream > ,
50+ ) -> (
51+ FromTokio < ReadHalf < DuplexStream > > ,
52+ FromTokio < WriteHalf < DuplexStream > > ,
53+ ) {
54+ let ( read, write) = tokio:: io:: split ( stream. into_inner ( ) ) ;
55+
56+ ( FromTokio :: new ( read) , FromTokio :: new ( write) )
57+ }
58+
59+ let ( stream, _) = tokio:: io:: duplex ( 16 ) ;
60+
61+ let read_buf = & mut [ 0u8 ; SIZE ] ;
62+ let write_buf = & mut [ 0u8 ; SIZE ] ;
63+ let fragments_buf = & mut [ 0u8 ; SIZE ] ;
64+
65+ let mut websocketz = WebSocket :: client (
66+ FromTokio :: new ( stream) ,
67+ StdRng :: from_os_rng ( ) ,
68+ read_buf,
69+ write_buf,
70+ fragments_buf,
71+ ) ;
72+
73+ let _ = next ! ( websocketz) ;
74+ let _ = send ! ( websocketz, Message :: Text ( "Message" ) ) ;
75+ let _ = send_fragmented ! ( websocketz, Message :: Text ( "Message" ) , 2 ) ;
76+
77+ let ( mut websocketz_read, mut websocketz_write) = websocketz. split_with ( split) ;
78+
79+ let _ = next ! ( websocketz_read) ;
80+ let _ = send ! ( websocketz_write, Message :: Text ( "Message" ) ) ;
81+ let _ = send_fragmented ! ( websocketz_write, Message :: Text ( "Message" ) , 2 ) ;
82+ }
83+ }
84+
3885mod client {
3986 use crate :: options:: ConnectOptions ;
4087
0 commit comments