11#![ allow( static_mut_refs) ]
22
3+ use std:: rc:: Rc ;
4+
35use macros:: { effect, memo, signal} ;
46
57static mut SOURCE_A_CALLED : i32 = 0 ;
@@ -65,6 +67,26 @@ pub fn effect_f() {
6567fn simple_effect_test ( ) {
6668 A_set ( 0 ) ;
6769 effect ! ( effect_e) ;
70+ effect ! ( || { effect_f( ) } ) ;
71+
72+ unsafe { SOURCE_A_CALLED = 0 } ;
73+ unsafe { SOURCE_B_CALLED = 0 } ;
74+ unsafe { DERIVED_C_CALLED = 0 } ;
75+ unsafe { DERIVED_D_CALLED = 0 } ;
76+ unsafe { EFFECT_E_CALLED = 0 } ;
77+ unsafe { EFFECT_F_CALLED = 0 } ;
78+
79+ A_set ( 10 ) ;
80+
81+ assert_eq ! ( unsafe { SOURCE_A_CALLED } , 0 ) ;
82+ assert_eq ! ( unsafe { SOURCE_B_CALLED } , 0 ) ;
83+ assert_eq ! ( unsafe { DERIVED_C_CALLED } , 0 ) ;
84+ assert_eq ! ( unsafe { DERIVED_D_CALLED } , 0 ) ;
85+ assert_eq ! ( unsafe { EFFECT_E_CALLED } , 0 ) ;
86+ assert_eq ! ( unsafe { EFFECT_F_CALLED } , 0 ) ;
87+
88+ A_set ( 0 ) ;
89+ let _ = Rc :: into_raw ( effect ! ( effect_e) ) ;
6890
6991 unsafe { SOURCE_A_CALLED = 0 } ;
7092 unsafe { SOURCE_B_CALLED = 0 } ;
@@ -83,7 +105,7 @@ fn simple_effect_test() {
83105 assert_eq ! ( unsafe { EFFECT_F_CALLED } , 0 ) ;
84106
85107 A_set ( 0 ) ;
86- effect ! ( || { effect_f( ) } ) ;
108+ let _ = Rc :: into_raw ( effect ! ( || { effect_f( ) } ) ) ;
87109
88110 unsafe { SOURCE_A_CALLED = 0 } ;
89111 unsafe { SOURCE_B_CALLED = 0 } ;
0 commit comments