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()
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((!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<card>& 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
{

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();
}