extern crate arraygen;
#[allow(non_snake_case)]
mod tests {
use arraygen::Arraygen;
#[test]
fn test_trait_objects_return_type___with_proper_declarations_and_includes___compiles_as_expected(
) {
struct A {}
struct B {}
trait C {}
impl C for A {}
impl C for B {}
#[derive(Arraygen)]
#[gen_array(fn trait_c: &dyn C)]
struct Sut {
#[in_array(trait_c)]
a: A,
#[in_array(trait_c)]
b: B,
}
let actual = Sut { a: A {}, b: B {} };
assert_eq!(actual.trait_c().len(), 2);
}
#[test]
fn test_trait_objects_return_type___with_display_sim_bug_scenario___compiles_as_expected() {
trait UiController {
fn give(&self) -> f32;
}
#[derive(Clone)]
struct RgbRedR {
pub value: f32,
}
impl UiController for RgbRedR {
fn give(&self) -> f32 {
self.value
}
}
#[derive(Clone, Arraygen)]
#[gen_array(pub fn get_ui_controllers: &dyn UiController)]
#[gen_array(pub fn get_ui_controllers_mut: &mut dyn UiController)]
struct DisplaySimBug {
#[in_array(get_ui_controllers, get_ui_controllers_mut)]
rgb_red_r: RgbRedR,
}
let mut actual = DisplaySimBug {
rgb_red_r: RgbRedR { value: 3.0 },
};
assert_eq!(actual.get_ui_controllers_mut().len(), 1);
assert_eq!(actual.get_ui_controllers().len(), 1);
}
}