Référence de la classe TestCases

Liste de tous les membres

Fonctions membres publiques statiques

static bool doInteger (int parameter)
 Calculs sur les entiers.
static bool doLong (int parameter)
 Calculs sur les entiers longs.
static bool doDouble (int parameter)
 Calculs sur les doubles.
static bool doIO (int parameter)
 Ecriture d'un fichier d'un pattern composé d'une ligne de lettres contenant des caractères accentués.
static bool doConcatenation (int parameter)
 Concaténation de n chaines en une seule.
static bool doMatrix (int parameter)
 Simple multiplication de deux matrices carrées.
static bool doSort (int n)
 Tri d'un tableau d'ordre inversé par rapport à l'objectif.
static bool doHash (int parameter)
 Ici on cré une table de hash<int,int> initialisé à FACTOR*parameter valeurs entières.
static bool doException (int parameter)
 Génére un nombre important d'exceptions dans une boucle.
static bool doTrigo (int parameter)
 Fonctions mathématiques et trigonométriques.
static bool doLoop (int parameter)
 6 boucles imbriquées.
static bool doVector (int parameter)
 Création de deux vecteurs et divers opérations pour passer des éléments de l'un à l'autre.
static bool doThreads (int parameter)
 Composition d'un anneau de N threads servant de relai de signal.


Documentation des fonctions membres

static bool doInteger ( int  parameter  )  [static]

Calculs sur les entiers.

Paramètres:
parameter Nombre d'itérations
Renvoie:
True si le test est validé.
00081     {
00082       int result = 1;
00083 
00084       for (int i = 1; i < parameter; i++) {
00085         result -= i;
00086         result += i;
00087         result *= i;
00088         result /= i;
00089       }
00090       return result == 1;
00091     }

static bool doLong ( int  parameter  )  [static]

Calculs sur les entiers longs.

Paramètres:
parameter Nombre d'itérations
Renvoie:
True si le test est validé.
00100     {
00101       long result = 1;
00102 
00103       for (int i = 1; i < parameter; i++) {
00104         result -= i;
00105         result += i;
00106         result *= i;
00107         result /= i;
00108       }
00109       return result == 1;
00110     }

static bool doDouble ( int  parameter  )  [static]

Calculs sur les doubles.

Paramètres:
parameter Nombre d'itérations
Renvoie:
True si le test est validé.
00119     {
00120       double result = 1;
00121 
00122       for (int i = 1; i < parameter; i++) {
00123         result -= i;
00124         result += i;
00125         result *= i;
00126         result /= i;
00127       }
00128       return result == 1;
00129     }

static bool doIO ( int  parameter  )  [static]

Ecriture d'un fichier d'un pattern composé d'une ligne de lettres contenant des caractères accentués.

Ensuite relecture du même fichier ligne par ligne.

Paramètres:
parameter Nombre d'itérations
Renvoie:
True si le test est validé.
00139     {
00140       const String PATTERN = "éàôabcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefgh";
00141       const String FILE_NAME = "../tmp/test_csharp.txt";
00142 
00143       StreamWriter streamWriter = new StreamWriter (FILE_NAME);
00144 
00145       for (int i = 0; i < parameter; i++) {
00146         streamWriter.WriteLine (PATTERN);
00147       }
00148       streamWriter.Close ();
00149 
00150       StreamReader streamReader = new StreamReader (FILE_NAME);
00151       String line = "";
00152       for (int i = 0; i < parameter; i++) {
00153         line = streamReader.ReadLine ();
00154         if (!line.Equals (PATTERN)) {
00155           return false;
00156         }
00157       }
00158       return true;
00159     }

static bool doConcatenation ( int  parameter  )  [static]

Concaténation de n chaines en une seule.

Pour être plus juste par rapport à l'immutabilité des chaînes dans les langages Java et C#, ce sont les versions bufferisées qui sont utilisées.

Paramètres:
parameter nombre de concaténations.
Renvoie:
true si c'est ok
00169     {
00170       StringBuilder buffer = new StringBuilder();
00171       const String PATTERN = "éàôabcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefgh";
00172 
00173       for (int j = 0; j < parameter; j++) {
00174         buffer.Append(PATTERN);
00175       }
00176 
00177       return buffer.Length == PATTERN.Length * parameter &&
00178       buffer.ToString().Substring (buffer.Length - PATTERN.Length).Equals (PATTERN);
00179     }

static bool doMatrix ( int  parameter  )  [static]

Simple multiplication de deux matrices carrées.

Paramètres:
parameter taille de la matrice
Renvoie:
true si tout est ok
00188     {
00189       // Create the the matrix
00190       int [,] m1 = new int [parameter, parameter];
00191       int [,] m2 = new int [parameter, parameter];
00192       int count = 1;
00193       for (int i = 0; i < parameter; i++) {
00194         for (int j = 0; j < parameter; j++) {
00195           m1 [i, j] = count;
00196           m2 [i, j] = 0;
00197           count++;
00198         }
00199       }
00200 
00201       // Create inversion matrix
00202       for (int i = 0; i < parameter; i++) {
00203         m2 [i, parameter - i - 1] = 1;
00204       }
00205 
00206       // Multiply them
00207       int [,] mm = new int [parameter, parameter];
00208       for (int i = 0; i < parameter; i++) {
00209         for (int j = 0; j < parameter; j++) {
00210           int val = 0;
00211           for (int k = 0; k < parameter; k++) {
00212             val += m1 [i, k] * m2 [k, j];
00213           }
00214           mm [i, j] = val;
00215         }
00216       }
00217 
00218       // Check inversion
00219       for (int i = 0; i < parameter; i++) {
00220         for (int j = 0; j < parameter; j++) {
00221           if (mm [i, j] != m1 [i, parameter - j - 1]) {
00222             return false;
00223           }
00224         }
00225       }
00226       return true;
00227     }

static bool doSort ( int  n  )  [static]

Tri d'un tableau d'ordre inversé par rapport à l'objectif.

Paramètres:
n Taille du tableau
Renvoie:
true si le test est validé.
00236     {
00237       int i, j;
00238 
00239       int[] ra = new int [n + 1];
00240       for (i = 0; i <= n; i++) {
00241         ra [i] = n - i;
00242       }
00243       int ir = n;
00244       int l = (n >> 1) + 1;
00245       int rra;
00246 
00247       for (;;) {
00248         if (l> 1) {
00249           rra = ra [--l];
00250         }
00251         else {
00252           rra = ra [ir];
00253           ra [ir] = ra [1];
00254           if (--ir == 1) {
00255             ra [1] = rra;
00256             break;
00257           }
00258         }
00259         i = l;
00260         j = l << 1;
00261         while (j <= ir) {
00262           if (j < ir && ra [j] < ra [j + 1]) {
00263             ++j;
00264           }
00265           if (rra < ra [j]) {
00266             ra [i] = ra [j];
00267             j += i = j;
00268           }
00269           else {
00270             j = ir + 1;
00271           }
00272         }
00273         ra [i] = rra;
00274       }
00275       for (i = 1; i < n; i++) {
00276         if (ra [i]> ra [i + 1]) {
00277           return false;
00278         }
00279       }
00280       return true;
00281     }

static bool doHash ( int  parameter  )  [static]

Ici on cré une table de hash<int,int> initialisé à FACTOR*parameter valeurs entières.

Ensuite on énumère ces valeurs pour les ajouter dans une seconde hash avec une clef % FACTOR.

Paramètres:
parameter La taille de la hash / FACTOR
Renvoie:
true si ok
00291     {
00292       const int FACTOR = 100;
00293       int ITEMS = parameter * FACTOR;
00294       Hashtable hash1 = new Hashtable ();
00295       Hashtable hash2 = new Hashtable ();
00296 
00297       for (int i = 0; i < ITEMS; i++) {
00298         hash1.Add (i, i);
00299       }
00300 
00301       IDictionaryEnumerator it = hash1.GetEnumerator ();
00302       while (it.MoveNext ()) {
00303         int key = (int)it.Key;
00304         int key2 = key % FACTOR;
00305         int v1 = (int)it.Value;
00306         object v2 = hash2 [key2];
00307         if (v2 != null) {
00308           v1 += (int)v2;
00309           hash2 [key2] = v1;
00310         }
00311         else {
00312           hash2.Add (key2, v1);
00313         }
00314         //hash1.Remove(key);
00315       }
00316       return hash2.Count == FACTOR;
00317     }

static bool doException ( int  parameter  )  [static]

Génére un nombre important d'exceptions dans une boucle.

Paramètres:
parameter nombre d'itérations.
Renvoie:
true si le test est validé.
00326     {
00327       int counter = 0;
00328 
00329       for (int i = 0; i < parameter; i++) {
00330         if (i % 2 == 0) {
00331           try {
00332             throw new System.Exception ();
00333           } catch (Exception e) {
00334             counter++;
00335           }
00336         }
00337       }
00338 
00339       return counter == parameter / 2;
00340     }

static bool doTrigo ( int  parameter  )  [static]

Fonctions mathématiques et trigonométriques.

Paramètres:
parameter itéartions sur le test
Renvoie:
true si ok
00349     {
00350       double sine = 0.0D;
00351       double cosine = 0.0D;
00352       double tangent = 0.0D;
00353       double logarithm = 0.0D;
00354       double squareRoot = 0.0D;
00355       double cumul = 0;
00356       double full = 2 * Math.PI;
00357 
00358       for (int i = 0; i < parameter; i++) {
00359         double angle = 0;
00360         while (angle < full) {
00361           sine = Math.Sin (angle);
00362           cosine = Math.Cos (angle);
00363           tangent = Math.Tan (angle);
00364           cumul += sine + cosine + tangent;
00365           angle++;
00366         }
00367         logarithm = Math.Log (i + 1);
00368         squareRoot = Math.Sqrt (i + 1);
00369         cumul += logarithm + squareRoot;
00370       }
00371       return cumul != 0;
00372     }

static bool doLoop ( int  parameter  )  [static]

6 boucles imbriquées.

Paramètres:
parameter nombre d'itérations à chaque étage
Renvoie:
True si le test est validé
00381     {
00382       int a, b, c, d, e, f;
00383       double x = 0;
00384 
00385       for (a = 0; a <= parameter; a++) {
00386         for (b = 0; b <= parameter; b++) {
00387           for (c = 0; c <= parameter; c++) {
00388             for (d = 0; d <= parameter; d++) {
00389               for (e = 0; e <= parameter; e++) {
00390                 for (f = 0; f <= parameter; f++) {
00391                   x = a + b + c + d + e + f;
00392                 }
00393               }
00394             }
00395           }
00396         }
00397       }
00398       return x == 6 * parameter;
00399     }

static bool doVector ( int  parameter  )  [static]

Création de deux vecteurs et divers opérations pour passer des éléments de l'un à l'autre.

Paramètres:
parameter taille des vecteurs.
Renvoie:
true si le test est validé.
00409     {
00410       ArrayList Li1 = new ArrayList ();
00411 
00412       for (int i = 0; i < parameter; i++) {
00413         Li1.Insert (Li1.Count, i);
00414       }
00415 
00416       ArrayList Li2 = new ArrayList (Li1);
00417       ArrayList Li3 = new ArrayList ();
00418 
00419       while (Li2.Count> 0) {
00420         Li3.Insert (Li3.Count, Li2 [0]);
00421         Li2.RemoveAt (0);
00422       }
00423 
00424       while (Li3.Count> 0) {
00425         Li2.Insert (Li2.Count, Li3 [Li3.Count - 1]);
00426         Li3.RemoveAt (Li3.Count - 1);
00427       }
00428 
00429       ArrayList tmp = new ArrayList ();
00430       while (Li1.Count> 0) {
00431         tmp.Insert (0, Li1 [0]);
00432         Li1.RemoveAt (0);
00433       }
00434       Li1 = tmp;
00435 
00436       return((int)(Li1 [0]) == parameter - 1);
00437     }

static bool doThreads ( int  parameter  )  [static]

Composition d'un anneau de N threads servant de relai de signal.

Le signal en question est un entier dont la valeur est 1000xNombreThreads. Le message est passé d'un thread à l'autre en étant à chaque fois décrémenté. Lorsqu'un thread reçoit une valeur de signal négative, il le passe à son voisin et meurt.

Paramètres:
n Nombre de threads
Renvoie:
true si le test est validé.
00449     {
00450       int threadCount = parameter - 1;
00451       int factor = 1000;
00452       int signal = factor * parameter;
00453       Node firstNode = new Node ();
00454 
00455       // Make the ring
00456       Node previousNode = firstNode;
00457 
00458       for (int iNode = 0; iNode < threadCount; iNode++) {
00459         Node currentNode = new Node ();
00460         if (previousNode != null) {
00461           currentNode.setNextNode (previousNode);
00462         }
00463         else {
00464           firstNode = currentNode;
00465         }
00466         currentNode.start ();
00467         previousNode = currentNode;
00468       }
00469 
00470       // Close the ring
00471       firstNode.setNextNode (previousNode);
00472 
00473       while (true) {
00474         if (Node.ALIVES.Count == threadCount) {
00475           break;
00476         }
00477         Thread.Sleep (1);
00478       }
00479 
00480       firstNode.initialize (signal);
00481       return firstNode.received == factor+1;
00482     }

Voici le graphe d'appel pour cette fonction :


La documentation de cette classe a été générée à partir du fichier suivant :

Généré le Fri Jun 27 14:52:53 2008 par  doxygen 1.5.5