diff --git a/SimpleGame/src/Include/NoteTile.hpp b/SimpleGame/src/Include/NoteTile.hpp index ab3b236..f4695b7 100644 --- a/SimpleGame/src/Include/NoteTile.hpp +++ b/SimpleGame/src/Include/NoteTile.hpp @@ -29,7 +29,7 @@ public: static void clear() { existing_tiles.clear(); }; // Should be called when one of arrows key pressed, return True if it's a good // press - bool checkPress(float press_time, NotePlaceEnum key_pressed); + static bool checkPress(float press_time, NotePlaceEnum key_pressed); // Some getters usefull in test : float getPlayTime() const { return play_time; }; diff --git a/SimpleGame/src/Source/NoteTile.cpp b/SimpleGame/src/Source/NoteTile.cpp index 2d3af91..0d39ef9 100644 --- a/SimpleGame/src/Source/NoteTile.cpp +++ b/SimpleGame/src/Source/NoteTile.cpp @@ -21,10 +21,11 @@ void NoteTile::create(float play_time, float good_interval, std::unique_ptr(new NoteTile(play_time, good_interval, place))); } -bool NoteTile::checkPress(float press_time, NotePlaceEnum) { +bool NoteTile::checkPress(float press_time, NotePlaceEnum key_pressed) { for (const auto ¬e_tile : NoteTile::existing_tiles) { if (note_tile->play_time - note_tile->good_interval / 2 < press_time && - note_tile->play_time + note_tile->good_interval / 2 > press_time) { + note_tile->play_time + note_tile->good_interval / 2 > press_time && + note_tile->place == key_pressed) { return true; } } diff --git a/SimpleGame/src/Test/NoteTileTest.cpp b/SimpleGame/src/Test/NoteTileTest.cpp index 60f983c..e9b913b 100644 --- a/SimpleGame/src/Test/NoteTileTest.cpp +++ b/SimpleGame/src/Test/NoteTileTest.cpp @@ -5,14 +5,35 @@ namespace NoteTile_test { +/*TEST(NoteFileTest, No) { EXPECT_EQ(0, 1); }*/ TEST(NoteFileTest, Yes) { EXPECT_EQ(0, 0); } -TEST(NoteFileTest, No) { EXPECT_EQ(0, 1); } TEST(NoteTileTest, CreateTile) { NoteTile::clear(); NoteTile::create(2.0f, 0.5f, NotePlaceEnum::Right); EXPECT_FLOAT_EQ(NoteTile::getExistingTiles()[0]->getPlayTime(), 2.0f); EXPECT_FLOAT_EQ(NoteTile::getExistingTiles()[0]->getGoodInterval(), 0.5f); EXPECT_EQ(NoteTile::getExistingTiles()[0]->getPlace(), NotePlaceEnum::Right); + NoteTile::clear(); } + +// Pour rappel good_interval c'est l'intervalle entier, donc la marge en positif +// est negatif est divisé par 2, voir checkPress +TEST(NoteTileTest, CheckGoodPress) { + NoteTile::clear(); + NoteTile::create(2.0f, 0.5f, NotePlaceEnum::Right); + NoteTile::create(3.0f, 0.5f, NotePlaceEnum::Middle); + NoteTile::create(0.5f, 0.2f, NotePlaceEnum::Left); + + EXPECT_FALSE(NoteTile::checkPress(1.0f, NotePlaceEnum::Left)); + EXPECT_FALSE(NoteTile::checkPress(0.7f, NotePlaceEnum::Left)); + EXPECT_FALSE(NoteTile::checkPress(0.6f, NotePlaceEnum::Middle)); + EXPECT_FALSE(NoteTile::checkPress(3.5f, NotePlaceEnum::Right)); + + EXPECT_TRUE(NoteTile::checkPress(2.2f, NotePlaceEnum::Right)); + EXPECT_TRUE(NoteTile::checkPress(1.8f, NotePlaceEnum::Right)); + EXPECT_TRUE(NoteTile::checkPress(3.2f, NotePlaceEnum::Middle)); + EXPECT_TRUE(NoteTile::checkPress(0.45f, NotePlaceEnum::Left)); +} + }; // namespace NoteTile_test