@@ -17,36 +17,29 @@ TEST_CASE("NoteGame Flow") {
1717 config.mode = " Majeur" ;
1818 config.maxChallenges = 2 ; // Test avec 2 défis pour vérifier l'enchaînement
1919 NoteGame game (transport, midi, config);
20-
2120 game.start ();
2221 std::thread gameThread ([&game]() { game.play (); });
23-
2422 // Premier défi
2523 Message msg1 = transport.waitForSentMessage ();
2624 CHECK (msg1.getType () == " note" );
2725 std::string expectedNote = msg1.getField (" note" );
28-
2926 // Simulation de la réponse correcte via MIDI
3027 midi.pushNotes ({expectedNote});
31-
3228 // Vérification du résultat (attendu correct)
3329 Message res1 = transport.waitForSentMessage ();
3430 CHECK (res1.getType () == " result" );
3531 CHECK (res1.hasField (" correct" ));
36-
3732 // Signal pour passer au défi suivant
3833 transport.pushIncoming (Message (" ready" ));
39-
4034 // Deuxième défi
4135 Message msg2 = transport.waitForSentMessage ();
4236 CHECK (msg2.getType () == " note" );
4337 expectedNote = msg2.getField (" note" );
4438 midi.pushNotes ({expectedNote});
45-
4639 Message res2 = transport.waitForSentMessage ();
4740 CHECK (res2.getType () == " result" );
4841 CHECK (res2.hasField (" correct" ));
49-
42+ game. stop ();
5043 if (gameThread.joinable ()) gameThread.join ();
5144}
5245
@@ -60,22 +53,18 @@ TEST_CASE("NoteGame Incorrect Answer") {
6053 config.mode = " maj" ;
6154 config.maxChallenges = 1 ;
6255 NoteGame game (transport, midi, config);
63-
6456 game.start ();
6557 std::thread gameThread ([&game]() { game.play (); });
66-
6758 Message msg1 = transport.waitForSentMessage ();
6859 std::string expectedNote = msg1.getField (" note" );
69-
7060 // Envoyer note incorrecte
7161 std::string wrongNote = (expectedNote == " c4" ) ? " d4" : " c4" ;
7262 midi.pushNotes ({wrongNote});
73-
7463 Message res1 = transport.waitForSentMessage ();
7564 CHECK (res1.getType () == " result" );
7665 CHECK (res1.hasField (" incorrect" ));
7766 CHECK_FALSE (res1.hasField (" correct" ));
78-
67+ game. stop ();
7968 if (gameThread.joinable ()) gameThread.join ();
8069}
8170
@@ -89,15 +78,12 @@ TEST_CASE("NoteGame Unknown Scale Fallback") {
8978 config.mode = " mode" ;
9079 config.maxChallenges = 1 ;
9180 NoteGame game (transport, midi, config);
92-
9381 game.start ();
9482 std::thread gameThread ([&game]() { game.play (); });
95-
9683 // Devrait fallback sur Do Majeur, donc générer une note
9784 Message msg1 = transport.waitForSentMessage ();
9885 CHECK (msg1.getType () == " note" );
99-
100- midi.close (); // Arrêter attente notes
86+ game.stop ();
10187 if (gameThread.joinable ()) gameThread.join ();
10288}
10389
@@ -111,26 +97,22 @@ TEST_CASE("NoteGame Multiple Incorrect Notes") {
11197 config.mode = " maj" ;
11298 config.maxChallenges = 1 ;
11399 NoteGame game (transport, midi, config);
114-
115100 game.start ();
116101 std::thread gameThread ([&game]() { game.play (); });
117-
118102 Message msg1 = transport.waitForSentMessage ();
119103 std::string expectedNote = msg1.getField (" note" );
120-
121104 // Envoyer plusieurs notes incorrectes (couvre ligne 60 branch)
122105 std::vector<std::string> wrongNotes;
123106 if (expectedNote != " c4" ) wrongNotes.push_back (" c4" );
124107 if (expectedNote != " d4" ) wrongNotes.push_back (" d4" );
125108 if (expectedNote != " e4" ) wrongNotes.push_back (" e4" );
126109 midi.pushNotes (wrongNotes);
127-
128110 Message res1 = transport.waitForSentMessage ();
129111 CHECK (res1.getType () == " result" );
130112 CHECK (res1.hasField (" incorrect" ));
131113 // Vérifier que champ incorrect contient espaces (ligne 60)
132114 std::string incorrect = res1.getField (" incorrect" );
133115 CHECK (incorrect.find (" " ) != std::string::npos);
134-
116+ game. stop ();
135117 if (gameThread.joinable ()) gameThread.join ();
136118}
0 commit comments