From 3420425f309196c9cea38aa44b18ba6d757c510d Mon Sep 17 00:00:00 2001 From: trotFunky Date: Sat, 27 Apr 2019 01:11:20 +0200 Subject: [PATCH] Quelques GTests pour le coinche --- snippets/CMakeLists.txt | 14 ++++++++- snippets/Coinche.cpp | 14 +++++---- snippets/gTestCoinche.cpp | 66 +++++++++++++++++++++++++++++++++++++++ snippets/playCoinche.cpp | 2 +- 4 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 snippets/gTestCoinche.cpp diff --git a/snippets/CMakeLists.txt b/snippets/CMakeLists.txt index c1bea63..73df799 100644 --- a/snippets/CMakeLists.txt +++ b/snippets/CMakeLists.txt @@ -19,4 +19,16 @@ if(NOT SFML_FOUND) message(FATAL_ERROR "SFML couldn't be located!") endif() -add_executable(coinche Coinche.cpp Coinche.h playCoinche.cpp) \ No newline at end of file +add_executable(coinche Coinche.cpp Coinche.h playCoinche.cpp) + +add_executable(coincheTest Coinche.cpp Coinche.h gTestCoinche.cpp) + +find_package(GTest REQUIRED) +if(GTest_FOUND) + enable_testing() + include_directories(${GTEST_INCLUDE_DIRS}) + target_link_libraries(coincheTest ${GTEST_BOTH_LIBRARIES}) + target_link_options(coincheTest PRIVATE -pthread) +else() + message(FATAL_ERROR "GTest pas trouvé") +endif() \ No newline at end of file diff --git a/snippets/Coinche.cpp b/snippets/Coinche.cpp index 4c99c01..087a731 100644 --- a/snippets/Coinche.cpp +++ b/snippets/Coinche.cpp @@ -95,12 +95,13 @@ card play(card played, std::vector& jeu, Couleur atout) { if(carte.couleur == played.couleur) { - if((!minGagnant && carte.value > played.value ) || - (minGagnant && carte.value > played.value && carte.value < minGagnant->value)) + if((!minGagnant && carte.value + carte.force > played.value + played.force) || + (minGagnant && carte.value + carte.force > played.value + played.force && carte.value + carte.force < minGagnant->value + minGagnant->force)) { minGagnant = &carte; } - else if(!minCouleur || ( carte.value < played.value && carte.value < minCouleur->value) ) + else if(!minCouleur || + ( carte.value + carte.force < played.value + played.value && carte.value + carte.force < minCouleur->value + minCouleur->force) ) { minCouleur = &carte; } @@ -109,14 +110,14 @@ card play(card played, std::vector& jeu, Couleur atout) { if(carte.couleur == atout) { - if(!minAtout || carte.value < minAtout->value) + if(!minAtout || carte.value + carte.force < minAtout->value + minAtout->force) { minAtout = &carte; } } else { - if(!minPerdant || carte.value < minPerdant->value) + if(!minPerdant || carte.value + carte.force < minPerdant->value + minPerdant->force) { minPerdant = &carte; } @@ -157,7 +158,8 @@ bool WonOrLost(card played, card chosen, Couleur atout) { if(played.couleur == chosen.couleur) { - return(chosen.value > played.value); + + return(chosen.value + chosen.force > played.value + played.force); } else { diff --git a/snippets/gTestCoinche.cpp b/snippets/gTestCoinche.cpp new file mode 100644 index 0000000..5b1bedd --- /dev/null +++ b/snippets/gTestCoinche.cpp @@ -0,0 +1,66 @@ +// +// Created by trotfunky on 25/04/19. +// + + +#include +#include +#include "Coinche.h" + +TEST(testCoinche,testValeursAtout) +{ + std::vector deck = generate_cards(); + + Couleur atout = pick_atout(); + + std::vector jeu; + + update_values(atout,deck,jeu); + + for(card carte : deck) + { + if(carte.force == Force::valet && carte.couleur == atout) + { + ASSERT_EQ(carte.value,20); + } + if(carte.force == Force::neuf && carte.couleur == atout) + { + ASSERT_EQ(carte.value,14); + } + } +} + +TEST(testCoinche,testCarte) +{ + card carte1{}; + carte1.couleur = Couleur::carreau; + carte1.force = Force::neuf; + carte1.value = 0; + + card carte2{}; + carte2.couleur = Couleur::coeur; + carte2.force = Force::dix; + carte2.value = 10; + + ASSERT_FALSE(WonOrLost(carte1,carte2,Couleur::pique)); + ASSERT_TRUE(WonOrLost(carte1,carte2,Couleur::coeur)); + + carte2.couleur = Couleur::carreau; + + ASSERT_TRUE(WonOrLost(carte1,carte2,Couleur::carreau)); + + carte2.force = Force::huit; + carte2.value = 0; + + ASSERT_FALSE(WonOrLost(carte1,carte2,Couleur::carreau)); + + carte2.force = Force::valet; + carte2.value = 1; + + ASSERT_TRUE(WonOrLost(carte1,carte2,Couleur::carreau)); +} + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/snippets/playCoinche.cpp b/snippets/playCoinche.cpp index cac3ce3..7e46bf3 100644 --- a/snippets/playCoinche.cpp +++ b/snippets/playCoinche.cpp @@ -38,7 +38,7 @@ int main() // On fait jouer une carte aléatoire à l'adversaire, vu que le tableau est mélangé de manière aléatoire card played = deck.back(); - std::cout << std::endl << "L'adversaire a joué " << played << " !" << std::endl; + std::cout << std::endl << "L'adversaire a joué " << played << " !" << std::endl; // On décide la carte que nous allons jouer card toPlay = play(played,main,atout);