Revise AutoReset && add its unittest
add auto_reset