Un test de base

Ecrivons un test "Bonjour vous !", simple. Créez un nouveau fichier nommé bonjour-1.xml et entrez les lignes suivantes :

<?xml version="1.0" encoding="iso-8859-1"?>

<!-- BEGIN TTF BLOCK
(display "Debug: Bonjour vous!")
(newline)
(test-ttf
    #f
)
END TTF BLOCK -->

<ttm version="0.2.0">
        <modules>
                <module name="hello.so" weight="10" mandatory="yes"/> 
        </modules>

        <resources>
                <variable>
                        <resourcetype type="dummy-type">
                                <linear name="#" from="1" to="50"/>
                        </resourcetype>
                </variable>
        </resources>

        <events>
                <event name="dummy-event" repeats="1">
                </event>
        </events>
</ttm>

Vous pouvez constater que la majeure du code ressemble à une configuration XML normale de Tablix (qui utilise votre module "Bonjour vous!" du second chapitre). Si vous lancez Tablix avec ce fichier, cela devrait fonctionner sans aucun problème puisque le code Scheme est commenté et que l'analyseur XML l'ignorera. Vous remarquerez que le code Scheme est délimité par les lignes contenant les mots BEGIN TTF BLOCK et END TTF BLOCK.

Conseil: Si vous n'êtes pas familier avec le Scheme, je vous recommande de lire le Manuel de référence Guile. Attention, car TinyScheme n'implémente pas tout ce qui y est décrit.

Pour les impatients : la syntaxe générale est :

(fonction argument1 argument2 ...)

Les fonctions sont définies comme suit :

(define (fonction arg1 arg2 ...) code ...)

Une boucle "for" où i va de 1 à 14 est réalisée par une fonction récursive qui s'appelle elle-même 15 fois (la récursion est beaucoup employé en Scheme) :

(define (loop i) 
    (if (< i 14) 
        (begin
            code ...
            (loop (+ i 1))
        )
    )
)
(loop 1)

Utilisez le point-virgule pour faire des commentaires dans le code :

; Ceci est un commentaire

En regardant le code, vous constatez que nous appelons trois fonctions dans notre test. Les deux premières ne sont là que pour l'exemple et ne sont généralement pas employées dans les tests (à moins que vous ne débuggiez votre code Scheme, au quel cas vous les utiliserez beaucoup) : la fonction (display) écrit du texte dans la sortie standard. (newline) écrit une nouvelle ligne après le texte.

(test-ttf) est une fonction qui doit être appelée dans tous les tests. Elle prend un nombre arbitraire d'arguments et ils doivent tous être évalués à #t (booléen "true" -vrai- en Scheme) si le module réussit le test. Puisque nous avons passé #f (false -faux-) dans cet exemple, le test échouera évidemment à chaque coup.

Vous pouvez maintenant lancer le test en utilisant la commande suivante :

Note: Voir la page "man" de tablix2_test(1) pour une description détaillée des arguments de tablix2_test. Pour l'instant, notez seulement que le second argument contient toujours une liste des options devant être passées à Tablix. Si vous n'avez pas besoin d'option (ce qui est le cas la plupart du temps), alors cet argument doit être tout de même présent, mais vide. Vous pouvez passer un argument vide à l'interpréteur bash avec "".

$ tablix2_test --file "" bonjour-1.xml

TABLIX testing framework 0.2.1, Copyright (C) 2002-2005 Tomaz Solc

using binary : /home/avian/software/bin/tablix2
using binary : /home/avian/software/bin/tablix2_output
repeats      : 1
parameters   :
test file    : hello-1.xml

             hello-1 : test-ttf: test number 1 failed
debug: Bonjour vous!
*** FAILED (ttf test failed) ***

Vous remarquerez que le test a échoué, comme prévu, mais que le texte de salution a tout de même été écrit. Pour éviter le bruit visuel, seul les lignes qui commencent par "debug" sont effectivement écrites par l'utilitaire tablix2_test , et elles sont les seules à être écrites si le test échoue.