[eside-ghost] Unit testing en C++ en tiempo de compilación? (templates)

STenyaK stenyak en gmail.com
Jue Ene 29 10:39:03 CET 2009


2009/1/29 Alfredo Beaumont <alfredo.beaumont en gmail.com>:
> Hmmm, o se me escapa algo o realmente no necesitas una testsuite en
> tiempo de compilación (testsuite en tiempo de compilación ==
> compilador, ergo necesitarías extendes el compilador).

No he leido muy a fondo los emails, pero si quieres hacer recuentos de
qué usos de un template petan en compilacion y cuales no (y si
deberian petar o no), no conozco una libreria dedicada a ello. Si lo
haces a mano, sugiero:

-Guardar cada uso de template de tu templateUnitTesting.h con un ifdef
propio (#ifdef unittest1 blahblah #endif  --- #ifdef unittest2
blehbleh #endif --- etc).
-Usar macros para definir los tipos de datos usados en los templates
(TIPO1, TIPO2, ...).

Despues, con un scriptcillo en bash, puedes lanzar el compilador con
-Dmacro o -Dmacro=valor. Con eso y una tabla de parametros a pasar y
resultados esperados podrias montarte una pequeña test suite
cutrecilla.

Para q te hagas a la idea:

for i in 1 2 3 4 5; do   #cada uno de los unittests de tu .h
  for tipo1 in int float bool; do
    for tipo2 in int float bool; do
      gcc -DTIPO1=$tipo1 -DTIPO2=$tipo2 -Dunittest$i
templateUnitTesting.h blahblahblah
      test $? -eq 0 ..... #vamos, q compruebas si ha compilao, si
debería haberlo hecho, actualizas los contadores de success y error,
etc...
done; done; done
echo "Passed $success out of $(($success+$errors)) tests."

En vez de bucles harcodeados, molaria coger de un csv (o algo) los $?
esperados para cada combinacion de $i y valores utilizados con -D.

No se si es lo que buscas, o si he malinterpretao completamente los
emails (seguramente lo segundo xD), pero weno, igual te sirve de
algo...

-- 
Saludos,
     Bruno González

_______________________________________________
Msn/Jabber: stenyak AT gmail.com
ICQ: 153709484
http://www.stenyak.com


Más información sobre la lista de distribución eside-ghost