Reflact template function, add template testcase