@@ -375,7 +375,6 @@ mod tests {
375
375
let buffer_generic = builder. create_buffer ( BufferSettings :: default ( ) ) ;
376
376
377
377
let buffers = TestJoinedValue :: select_buffers (
378
- builder,
379
378
buffer_i64,
380
379
buffer_f64,
381
380
buffer_string,
@@ -407,6 +406,55 @@ mod tests {
407
406
assert ! ( context. no_unhandled_errors( ) ) ;
408
407
}
409
408
409
+ #[ test]
410
+ fn test_select_buffers_json ( ) {
411
+ let mut context = TestingContext :: minimal_plugins ( ) ;
412
+
413
+ let workflow = context. spawn_io_workflow ( |scope, builder| {
414
+ let buffer_i64 =
415
+ JsonBuffer :: from ( builder. create_buffer :: < i64 > ( BufferSettings :: default ( ) ) ) ;
416
+ let buffer_f64 =
417
+ JsonBuffer :: from ( builder. create_buffer :: < f64 > ( BufferSettings :: default ( ) ) ) ;
418
+ let buffer_string =
419
+ JsonBuffer :: from ( builder. create_buffer :: < String > ( BufferSettings :: default ( ) ) ) ;
420
+ let buffer_generic =
421
+ JsonBuffer :: from ( builder. create_buffer :: < String > ( BufferSettings :: default ( ) ) ) ;
422
+
423
+ let buffers = TestJoinedValue :: select_buffers (
424
+ buffer_i64. downcast_for_message ( ) . unwrap ( ) ,
425
+ buffer_f64. downcast_for_message ( ) . unwrap ( ) ,
426
+ buffer_string. downcast_for_message ( ) . unwrap ( ) ,
427
+ buffer_generic. downcast_for_message ( ) . unwrap ( ) ,
428
+ ) ;
429
+
430
+ scope. input . chain ( builder) . fork_unzip ( (
431
+ |chain : Chain < _ > | chain. connect ( buffers. integer . input_slot ( ) ) ,
432
+ |chain : Chain < _ > | chain. connect ( buffers. float . input_slot ( ) ) ,
433
+ |chain : Chain < _ > | chain. connect ( buffers. string . input_slot ( ) ) ,
434
+ |chain : Chain < _ > | chain. connect ( buffers. generic . input_slot ( ) ) ,
435
+ ) ) ;
436
+
437
+ builder. join ( buffers) . connect ( scope. terminate ) ;
438
+ } ) ;
439
+
440
+ let mut promise = context. command ( |commands| {
441
+ commands
442
+ . request (
443
+ ( 5_i64 , 3.14_f64 , "hello" . to_string ( ) , "world" . to_string ( ) ) ,
444
+ workflow,
445
+ )
446
+ . take_response ( )
447
+ } ) ;
448
+
449
+ context. run_with_conditions ( & mut promise, Duration :: from_secs ( 2 ) ) ;
450
+ let value: TestJoinedValue < String > = promise. take ( ) . available ( ) . unwrap ( ) ;
451
+ assert_eq ! ( value. integer, 5 ) ;
452
+ assert_eq ! ( value. float, 3.14 ) ;
453
+ assert_eq ! ( value. string, "hello" ) ;
454
+ assert_eq ! ( value. generic, "world" ) ;
455
+ assert ! ( context. no_unhandled_errors( ) ) ;
456
+ }
457
+
410
458
#[ derive( Clone , JoinedValue ) ]
411
459
#[ buffers( struct_name = FooBuffers ) ]
412
460
struct TestDeriveWithConfig { }
0 commit comments