Quelques GTests pour le coinche

This commit is contained in:
trotFunky 2019-04-27 01:11:20 +02:00
parent 0346f20bfe
commit 3420425f30
4 changed files with 88 additions and 8 deletions

View file

@ -20,3 +20,15 @@ if(NOT SFML_FOUND)
endif() endif()
add_executable(coinche Coinche.cpp Coinche.h playCoinche.cpp) 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()

View file

@ -95,12 +95,13 @@ card play(card played, std::vector<card>& jeu, Couleur atout)
{ {
if(carte.couleur == played.couleur) if(carte.couleur == played.couleur)
{ {
if((!minGagnant && carte.value > played.value ) || if((!minGagnant && carte.value + carte.force > played.value + played.force) ||
(minGagnant && carte.value > played.value && carte.value < minGagnant->value)) (minGagnant && carte.value + carte.force > played.value + played.force && carte.value + carte.force < minGagnant->value + minGagnant->force))
{ {
minGagnant = &carte; 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; minCouleur = &carte;
} }
@ -109,14 +110,14 @@ card play(card played, std::vector<card>& jeu, Couleur atout)
{ {
if(carte.couleur == atout) if(carte.couleur == atout)
{ {
if(!minAtout || carte.value < minAtout->value) if(!minAtout || carte.value + carte.force < minAtout->value + minAtout->force)
{ {
minAtout = &carte; minAtout = &carte;
} }
} }
else else
{ {
if(!minPerdant || carte.value < minPerdant->value) if(!minPerdant || carte.value + carte.force < minPerdant->value + minPerdant->force)
{ {
minPerdant = &carte; minPerdant = &carte;
} }
@ -157,7 +158,8 @@ bool WonOrLost(card played, card chosen, Couleur atout)
{ {
if(played.couleur == chosen.couleur) if(played.couleur == chosen.couleur)
{ {
return(chosen.value > played.value);
return(chosen.value + chosen.force > played.value + played.force);
} }
else else
{ {

66
snippets/gTestCoinche.cpp Normal file
View file

@ -0,0 +1,66 @@
//
// Created by trotfunky on 25/04/19.
//
#include <gtest/gtest.h>
#include <vector>
#include "Coinche.h"
TEST(testCoinche,testValeursAtout)
{
std::vector<card> deck = generate_cards();
Couleur atout = pick_atout();
std::vector<card> 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();
}

View file

@ -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 // 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(); 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 // On décide la carte que nous allons jouer
card toPlay = play(played,main,atout); card toPlay = play(played,main,atout);