Skip to content

Commit 01af23f

Browse files
committed
remove builder argument in select_buffers; add test for select_buffers with json buffers
Signed-off-by: Teo Koon Peng <[email protected]>
1 parent dde0e6d commit 01af23f

File tree

2 files changed

+51
-4
lines changed

2 files changed

+51
-4
lines changed

macros/src/buffer.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,13 @@ pub(crate) fn impl_joined_value(input_struct: &ItemStruct) -> Result<TokenStream
3535

3636
impl #impl_generics #struct_ident #ty_generics #where_clause {
3737
fn select_buffers(
38-
builder: &mut ::bevy_impulse::Builder,
3938
#(
40-
#field_ident: impl ::bevy_impulse::Bufferable<BufferType = ::bevy_impulse::Buffer<#field_type>>,
39+
#field_ident: ::bevy_impulse::Buffer<#field_type>,
4140
)*
4241
) -> #buffer_struct_ident #ty_generics {
4342
#buffer_struct_ident {
4443
#(
45-
#field_ident: #field_ident.into_buffer(builder),
44+
#field_ident,
4645
)*
4746
}
4847
}

src/buffer/buffer_map.rs

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,6 @@ mod tests {
375375
let buffer_generic = builder.create_buffer(BufferSettings::default());
376376

377377
let buffers = TestJoinedValue::select_buffers(
378-
builder,
379378
buffer_i64,
380379
buffer_f64,
381380
buffer_string,
@@ -407,6 +406,55 @@ mod tests {
407406
assert!(context.no_unhandled_errors());
408407
}
409408

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+
410458
#[derive(Clone, JoinedValue)]
411459
#[buffers(struct_name = FooBuffers)]
412460
struct TestDeriveWithConfig {}

0 commit comments

Comments
 (0)