devxlogo

Test templates thoroughly

Test templates thoroughly

To write a test routine for a template class or function,you have to choose one concrete type for every formal typeof the template and run all tests on this instantiationof the template. Consider this buggy template function:

      template      double max (T t1, T t2)       {         return t1>t2 ? t1 : t2;       }

Clearly, the return value should be a T, not a double.Errors like that appear surprisingly frequently, because many templateswere originally designed as non-template classes/functions. If yourtest routine only tests the case that T is double,this error does not reveal itself!

The first conclusion is obvious: A sound test of a template checksseveral instantiations, and in that, every formal type parameter isto be instantiated by more than one type.

The second conclusion is less obvious: Every formal type parametershould also be instantiated at least once by a self-definedtype. Why? Even if you test the above function maxusing various built-in types such as double, int,and char, your test routine might not encounter an error,because all of these types are silently converted to double!

See also  5 Tips for Working With an Onsite Interpreter
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist