Les fichiers IRJ

Syntaxe

Les fichiers IRJ sont des fichiers de test faisant corespondre entrées et sorties du calcul d’un programme M. Chaque fichier IRJ est divisé en 7 parties, plus 3 parties optionnelles, et est terminé par la ligne ##.

  • NOM : le nom du test.

  • ENTREES-PRIMITIF : les valeurs des variables d’entrées au début du calcul. A chaque variable VAR est associée une valeur val entière ou décimale sur une ligne de la forme VAR/val. Les variables d’entrées qui ne sont pas définies dans le fichier IRJ seront initialisées à indefini.

  • CONTROLES-PRIMITIF : à documenter

  • RESULTATS-PRIMITIF : les valeurs des variables restituées à la fin du calcul. Comme pour les variables d’entrées, elles sont décrites sous la forme VAR/val. Les valeurs restituées absentes du fichiers IRJ sont supposées avoir la valeur indefini à la fin du calcul.

  • ENTREES-CORRECTIF : à documenter

  • CONTROLES-CORRECTIF : à documenter

  • RESULTATS-CORRECTIF : à documenter

  • ENTREES-RAPPELS : partie optionnelle, à documenter

  • CONTROLES-RAPPELS : partie optionnelle, à documenter

  • RESULTATS-RAPPELS : partie optionnelle, à documenter

Voici un exemple de fichier IRJ minimal

   #NOM
   MON-TEST
   #ENTREES-PRIMITIF
   X/0.0
   #CONTROLES-PRIMITIF
   #RESULTATS-PRIMITIF
   Y/1
   Z/2.0
   #ENTREES-CORRECTIF
   #CONTROLES-CORRECTIF
   #RESULTATS-CORRECTIF
   ##

De nombreux exemples de fichiers IRJ sont disponibles dans le dossier tests/.

Utilisation

Trois utilitaires sont dédiés à l’utilisation des fichiers IRJ.

IRJ checker

Les sources de mlang mettent à disposition un code de vérification de fichiers IRJ. Après compilation, il peut être exécuté via la commande :

$ dune exec -- irj_checker

Interpreteur

Le binaire mlang intègre un interpreteur de M qui prend en entrée un ou plusieurs fichiers M ainsi qu’un fichier IRJ. Après compilation, l’interpreteur peut être exécuté via la commande :

$ dune exec -- mlang test.m -A application -b interpreter --mpp_function cible_dentree  --dgfip_options='' -r test.irj

L’option -r peut être remplacée par -R pour tester l’ensemble des tests d’un dossier complet.

Fichiers C

Il est également possible d’utiliser les fichiers IRJ comme entrée du code C généré à partir d’une compilation de code M par mlang. Ce traitement est effectué dans le cas du backend dgfip_c de mlang, dont le code est disponible dans examples/dgfip_c/ml_primitif. La calculette d’une année donnée peut êter compilée via :

$ make YEAR=year compile_dgfip_c_backend

Les scripts présents dans examples/dgfip_c/ml_primitif/ml_driver permettent d’interfacer les fichiers IRJ avec les valeurs C de type T_irdata contenant le TGV (Tableau Général des Variables). La commande suivante permet de tester la calculette d’une année sur l’ensemble des tests fuzzés de la dite année.

$ make test_dgfip_c_backend

L’utilisation du script cal utilisé dans cette règle est documentée dans examples/dgfip_c/README.md.