Supponiamo che io sto scrivendo un modello di raccolta costituito da un modello di funzioneCome scrivere test per i modelli C++?
template<T> void f(T);
con il requisito che funziona con un set predefinito di classi A, B, C, e D, ad esempio, il seguente deve compilare :
template<> void f(A);
template<> void f(B);
template<> void f(C);
template<> void f(D);
Quale framework di test posso utilizzare per scrivere i casi di test che cattura questo requisito in fase di esecuzione, invece di non riuscire a compilazione del codice di prova? In un'altra parola, mi piacerebbe che il framework istanziasse i modelli al runtime e producesse un report di errore ben formattato se un sottoinsieme di questi fallisce.
So di poter rinunciare completamente ai framework di test e semplicemente scrivere un semplice file cc contenente le 4 righe sopra. Ma speravo di poter integrare questo requisito in normali casi di test standard per la generazione di rapporti sullo stato dei test. Ad esempio,
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: ecco come vengono testati anche i compilatori: p Si potrebbe dare un'occhiata al framework 'lit' in LLVM/Clang che consente di specificare gli errori previsti nei commenti in linea accanto al test. –