Ce qui suit se veut un code de test simpliste, pour vous permettre de faire une validation mineure du code écrit dans le cadre de votre TP00, et à vérifier le respect de certaines consignes (par exemple, le respect des noms imposés dans les consignes). Nous vous invitons à faire des tests plus rigoureux que ce qui suit.
Notez que ce code utilise clé et valeur à titre de nom pour les paires retournées dans le tableau que produit la méthode FabriqueGénérateurs.ObtenirStatistiques, mais ces deux noms n'ont pas été imposés par les consignes du travail pratique. Cette manoeuvre sera expliquée plus tard cette session, promis!
using GénérateurId;
using static Consommateur.Tests;
var fab = new FabriqueGénérateurs();
Test(fab, "Séquentiel", "ID", TypeGénérateur.Séquentiel);
Test(fab, "Recycleur", "ID", TypeGénérateur.Recycleur);
Test(fab, "Aléatoire", "ID", TypeGénérateur.Aléatoire, 3);
Test(fab, "Partagé", "ID", TypeGénérateur.Partagé, 3);
Test(fab, "Recycleur", "ID", TypeGénérateur.Recycleur);
Test(fab, "Partagé", "ID", TypeGénérateur.Partagé);
foreach (var (clé, valeur) in fab.ObtenirStatistiques())
Console.WriteLine($"{clé} a été instancié {valeur} fois");
using GénérateurId;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Consommateur
{
static class Tests
{
public static void Test(FabriqueGénérateurs fab, string nom, string préfixe, TypeGénérateur type)
{
IGénérateurId p = fab.Créer(type, préfixe);
var lst = new List<Identifiant>();
Console.Write($"{nom}, pige initiale :\n\t");
for (int i = 0; i != 10; ++i)
{
lst.Add(p.Prendre());
Console.Write($"{lst[lst.Count - 1]} ");
}
Console.WriteLine();
foreach (var n in lst)
p.Rendre(n);
Console.Write($"{nom}, pige post-remise :\n\t");
for (int i = 0; i != 10; ++i)
Console.Write($"{p.Prendre()} ");
Console.WriteLine();
}
public static void Test(FabriqueGénérateurs fab, string nom, string préfixe, TypeGénérateur type, int germe)
{
IGénérateurId p = fab.Créer(type, préfixe, germe);
var lst = new List<Identifiant>();
Console.Write($"{nom}, pige initiale :\n\t");
for (int i = 0; i != 10; ++i)
{
lst.Add(p.Prendre());
Console.Write($"{lst[lst.Count - 1]} ");
}
Console.WriteLine();
foreach (var n in lst)
p.Rendre(n);
Console.Write($"{nom}, pige post-remise :\n\t");
for (int i = 0; i != 10; ++i)
Console.Write($"{p.Prendre()} ");
Console.WriteLine();
}
}
}
Un affichage possible pour ce programme de test serait :
Séquentiel, pige initiale :
ID00000 ID00001 ID00002 ID00003 ID00004 ID00005 ID00006 ID00007 ID00008 ID00009
Séquentiel, pige post-remise :
ID00010 ID00011 ID00012 ID00013 ID00014 ID00015 ID00016 ID00017 ID00018 ID00019
Recycleur, pige initiale :
ID00000 ID00001 ID00002 ID00003 ID00004 ID00005 ID00006 ID00007 ID00008 ID00009
Recycleur, pige post-remise :
ID00009 ID00008 ID00007 ID00006 ID00005 ID00004 ID00003 ID00002 ID00001 ID00000
Aléatoire, pige initiale :
ID19236 ID45716 ID56688 ID13007 ID36732 ID11833 ID16397 ID62078 ID22853 ID24902
Aléatoire, pige post-remise :
ID32911 ID53056 ID45554 ID01984 ID05379 ID59249 ID08091 ID56063 ID49708 ID31213
Partagé, pige initiale :
ID19236 ID45716 ID56688 ID13007 ID36732 ID11833 ID16397 ID62078 ID22853 ID24902
Partagé, pige post-remise :
ID32911 ID53056 ID45554 ID01984 ID05379 ID59249 ID08091 ID56063 ID49708 ID31213
Recycleur, pige initiale :
ID00000 ID00001 ID00002 ID00003 ID00004 ID00005 ID00006 ID00007 ID00008 ID00009
Recycleur, pige post-remise :
ID00009 ID00008 ID00007 ID00006 ID00005 ID00004 ID00003 ID00002 ID00001 ID00000
Partagé, pige initiale :
ID14127 ID38283 ID32702 ID05286 ID65150 ID29877 ID33647 ID35818 ID24609 ID32588
Partagé, pige post-remise :
ID19316 ID15965 ID33013 ID04178 ID45250 ID58540 ID33793 ID27893 ID56175 ID43324
Séquentiel a été instancié 1 fois
Recycleur a été instancié 2 fois
Aléatoire a été instancié 1 fois
Partagé a été instancié 1 fois
Voilà!