Supongamos que estoy escribiendo un biblioteca plantilla consiste en una plantilla de función¿Cómo escribir prueba para plantillas C++?
template<T> void f(T);
con el requisito de que funciona con un conjunto predefinido de clases A, B, C, y D, por ejemplo, el siguiente debe compilar :
template<> void f(A);
template<> void f(B);
template<> void f(C);
template<> void f(D);
Qué marco de prueba que puede utilizar para escribir casos de prueba que captura este requisito en tiempo de ejecución en lugar de fallar en la compilación del código de prueba? En otras palabras, me gustaría que el framework instanciara las plantillas en runtime y produzca un informe de errores muy formateado si falla un subconjunto de ellos.
Sé que puedo renunciar a los marcos de prueba por completo y simplemente escribir un archivo de cc simple que contiene las 4 líneas de arriba. Pero esperaba poder incorporar este requisito en casos de prueba estándar y regulares para la generación de informes de estado de prueba. Por ejemplo,
test f works with A: passed.
test f works with B: passed.
test f works with C: failed! Cannot cast type C!
test f works with D: passed.
3 of 4 tests passed.
1 of 4 tests failed.
+1: así es como se prueban también los compiladores: p Es posible que desee echar un vistazo al marco 'iluminado' en LLVM/Clang que permite especificar los errores esperados en los comentarios alineados al lado de la prueba. –