#[ allow(unused_imports) ]
use component_model as the_module;
use the_module ::Assign;
#[ test ]
fn test_component_model_basic_derive()
{
#[ derive(Default, Debug, PartialEq) ]
#[ derive(the_module ::ComponentModel) ]
struct TestStruct
{
name: String,
value: i32,
}
let mut obj = TestStruct ::default();
Assign ::assign( &mut obj, "test_name".to_string() );
Assign ::assign( &mut obj, 42i32 );
assert_eq!( obj.name, "test_name" );
assert_eq!( obj.value, 42 );
let obj2 = TestStruct ::default()
.impute( "fluent_name".to_string() )
.impute( 100i32 );
assert_eq!( obj2.name, "fluent_name" );
assert_eq!( obj2.value, 100 );
}
#[ test ]
fn test_component_model_with_conflicting_types()
{
#[ derive(Default, Debug, PartialEq) ]
#[ derive(the_module ::ComponentModel) ]
struct ConflictStruct
{
first_string: String,
second_string: String, number: i32,
}
let mut obj = ConflictStruct ::default();
Assign ::assign( &mut obj, 42i32 );
assert_eq!( obj.number, 42 );
}
#[ test ]
fn test_component_model_tuple_assignment()
{
#[ derive(Default, Debug, PartialEq) ]
#[ derive(the_module ::ComponentModel) ]
struct TupleStruct
{
name: String,
value: i32,
flag: bool,
}
let mut obj = TupleStruct ::default();
Assign ::assign( &mut obj, "tuple_name".to_string() );
Assign ::assign( &mut obj, 123i32 );
Assign :: < bool, _ > ::assign( &mut obj, true );
assert_eq!( obj.name, "tuple_name" );
assert_eq!( obj.value, 123 );
assert!( obj.flag );
}
#[ test ]
fn test_component_model_with_attributes()
{
#[ derive(Default, Debug, PartialEq) ]
#[ derive(the_module ::ComponentModel) ]
struct AttributedStruct
{
#[ component( default = "default_value" ) ]
name: String,
value: i32,
}
let obj = AttributedStruct ::default();
let mut obj2 = obj;
Assign ::assign( &mut obj2, "new_name".to_string() );
Assign ::assign( &mut obj2, 42i32 );
assert_eq!( obj2.name, "new_name" );
assert_eq!( obj2.value, 42 );
}