Atelier Tutor 42 Lyon
Ce document présente trois exercices à réaliser en TDD (Test Driven Development) en langage C, en utilisant une bibliothèque de tests unitaires Unity. Chaque exercice est détaillé ci-dessous avec sa description, son niveau de difficulté et des exemples pour guider votre développement.
Niveau : Facile
Premier exercice pour commencer
Objectif :
Développer un programme qui retourne la température la plus proche de 0.
- Si aucune température n'est fournie, retourner 0.
- La liste des températures fournie doit contenir au maximum 10 000 valeurs.
- Si deux températures sont à égale distance de zéro (par exemple, 5 et -5), retourner la température positive.
-
Entrée : 2, 9, 1
Sortie : 1 -
Entrée : 2, 9, -1
Sortie : -1 -
Entrée : (aucune température)
Sortie : 0 -
Entrée : 2, 9, -2, -3
Sortie : 2
Niveau : Moyen
Les Romains utilisaient un système de numération basé sur des lettres : I, V, X, L, C, D, M. Bien que les Romains n’aient jamais découvert le chiffre zéro, leur système reste utilisé de nos jours pour certaines applications (par exemple, pour dater des événements culturels).
Objectif :
Écrire une fonction qui convertit un entier en son équivalent en chiffres romains.
Exemples :
| Entier | Chiffre Romain |
|---|---|
| 1 | I |
| 7 | VII |
| 10 | X |
| 49 | XLIX |
| 847 | DCCCXLVII |
| 1053 | MLIII |
| 1776 | MDCCLXXVI |
| 2018 | MMXVIII |
Remarque : Il n'est pas nécessaire de gérer des nombres supérieurs à environ 3000.
Objectif :
Écrire une fonction qui convertit une chaîne représentant un chiffre romain en un entier.
Niveau : Moyen
Étant donné une lettre majuscule, afficher un diamant commençant par 'A', s'élargissant jusqu'à la lettre donnée, puis se rétrécissant pour revenir à 'A'.
- Pour la lettre
E:
A
B B
C C
D D
E E
D D
C C
B B
A
- Pour la lettre
C:
A
B B
C C
B B
A
#include "unity.h"
#include "file_to_test.h"
void setUp(void) {
// set stuff up here
}
void tearDown(void) {
// clean stuff up here
}
void test_function_should_doBlahAndBlah(void) {
//test stuff
}
void test_function_should_doAlsoDoBlah(void) {
//more test stuff
}
// not needed when using generate_test_runner.rb
int main(void) {
UNITY_BEGIN();
RUN_TEST(test_function_should_doBlahAndBlah);
RUN_TEST(test_function_should_doAlsoDoBlah);
return UNITY_END();
}
