diff --git a/C++/.gitignore b/C++/.gitignore index 79b3c8c10f..8f446da067 100644 --- a/C++/.gitignore +++ b/C++/.gitignore @@ -1,3 +1,4 @@ Debug .project .cproject +build \ No newline at end of file diff --git a/C++/CMakeLists.txt b/C++/CMakeLists.txt new file mode 100644 index 0000000000..8acf50d252 --- /dev/null +++ b/C++/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.5.0) +project(Trivia VERSION 0.1.0 LANGUAGES C CXX) + +include(CTest) +enable_testing() + +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(CMAKE_CXX_STANDARD 14) + +add_compile_options(-g -Wall -Wextra -Werror) + +add_executable(Trivia Game.cpp GameRunner.cpp) + +set(CPACK_PROJECT_NAME ${PROJECT_NAME}) +set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) +include(CPack) diff --git a/C++/Game.cpp b/C++/Game.cpp index 58f200d604..460859e484 100644 --- a/C++/Game.cpp +++ b/C++/Game.cpp @@ -6,7 +6,7 @@ using namespace std; -Game::Game() : currentPlayer(0), places({}), purses({}){ +Game::Game() : places{}, purses{}, currentPlayer(0) { for (int i = 0; i < 50; i++) { @@ -148,14 +148,14 @@ bool Game::wasCorrectlyAnswered() bool winner = didPlayerWin(); currentPlayer++; - if (currentPlayer == players.size()) currentPlayer = 0; + if (currentPlayer == (int)players.size()) currentPlayer = 0; return winner; } else { currentPlayer++; - if (currentPlayer == players.size()) currentPlayer = 0; + if (currentPlayer == (int)players.size()) currentPlayer = 0; return true; } @@ -174,7 +174,7 @@ bool Game::wasCorrectlyAnswered() bool winner = didPlayerWin(); currentPlayer++; - if (currentPlayer == players.size()) currentPlayer = 0; + if (currentPlayer == (int)players.size()) currentPlayer = 0; return winner; } @@ -187,7 +187,7 @@ bool Game::wrongAnswer() inPenaltyBox[currentPlayer] = true; currentPlayer++; - if (currentPlayer == players.size()) currentPlayer = 0; + if (currentPlayer == (int)players.size()) currentPlayer = 0; return true; } diff --git a/C++/GameRunner.cpp b/C++/GameRunner.cpp index e57235c924..8ad6c9b761 100644 --- a/C++/GameRunner.cpp +++ b/C++/GameRunner.cpp @@ -1,4 +1,5 @@ #include +#include #include "Game.h" static bool notAWinner; @@ -6,7 +7,8 @@ static bool notAWinner; int main() { Game aGame; - + srand ((unsigned)time(0)); + // srand(0); aGame.add("Chet"); aGame.add("Pat"); aGame.add("Sue"); diff --git a/C/.gitignore b/C/.gitignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/C/.gitignore @@ -0,0 +1 @@ +build diff --git a/C/CMakeLists.txt b/C/CMakeLists.txt new file mode 100644 index 0000000000..25479aaa66 --- /dev/null +++ b/C/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.11.0) +project(Trivia VERSION 0.1.0 LANGUAGES C) + +include(CTest) +enable_testing() + +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(CMAKE_C_STANDARD 17) + +add_compile_options(-g -Wall -Wextra -Werror) + +add_executable(trivia game.c game_runner.c) + +set(CPACK_PROJECT_NAME ${PROJECT_NAME}) +set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) +include(CPack) diff --git a/C/game.c b/C/game.c index 10e27df1dd..31bfcb6f4a 100644 --- a/C/game.c +++ b/C/game.c @@ -1,5 +1,7 @@ #include "game.h" +#define _CRT_NONSTDC_NO_DEPRECATE // allow strdup() to be used on Windows + #include #include #include diff --git a/C/game_runner.c b/C/game_runner.c index a7aba2e98f..029365eea5 100644 --- a/C/game_runner.c +++ b/C/game_runner.c @@ -8,13 +8,13 @@ int main () { struct Game *a_game = game_new (); + //srand(1); // make RNG repeatable + srand ((unsigned)time(0)); game_add (a_game, "Chet"); game_add (a_game, "Pat"); game_add (a_game, "Sue"); - srand ((unsigned)time(0)); - do { game_roll (a_game, rand () % 5 + 1); diff --git a/python/.gitignore b/python/.gitignore new file mode 100644 index 0000000000..bee8a64b79 --- /dev/null +++ b/python/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/python/texttest_fixture.py b/python/texttest_fixture.py new file mode 100644 index 0000000000..537283c573 --- /dev/null +++ b/python/texttest_fixture.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +from trivia import main + +# Make sure all runs use the same random sequence +#from random import seed +#seed(1) + +if __name__ == "__main__": + main() diff --git a/python/trivia.py b/python/trivia.py index 676a6f2c97..d91df358ab 100755 --- a/python/trivia.py +++ b/python/trivia.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 class Game: def __init__(self): @@ -33,8 +33,8 @@ def add(self, player_name): self.purses[self.how_many_players] = 0 self.in_penalty_box[self.how_many_players] = False - print player_name + " was added" - print "They are player number %s" % len(self.players) + print (player_name + " was added") + print ("They are player number %s" % len(self.players)) return True @@ -43,42 +43,42 @@ def how_many_players(self): return len(self.players) def roll(self, roll): - print "%s is the current player" % self.players[self.current_player] - print "They have rolled a %s" % roll + print ("%s is the current player" % self.players[self.current_player]) + print ("They have rolled a %s" % roll) if self.in_penalty_box[self.current_player]: if roll % 2 != 0: self.is_getting_out_of_penalty_box = True - print "%s is getting out of the penalty box" % self.players[self.current_player] + print ("%s is getting out of the penalty box" % self.players[self.current_player]) self.places[self.current_player] = self.places[self.current_player] + roll if self.places[self.current_player] > 11: self.places[self.current_player] = self.places[self.current_player] - 12 - print self.players[self.current_player] + \ + print (self.players[self.current_player] + \ '\'s new location is ' + \ - str(self.places[self.current_player]) - print "The category is %s" % self._current_category + str(self.places[self.current_player])) + print ("The category is %s" % self._current_category) self._ask_question() else: - print "%s is not getting out of the penalty box" % self.players[self.current_player] + print ("%s is not getting out of the penalty box" % self.players[self.current_player]) self.is_getting_out_of_penalty_box = False else: self.places[self.current_player] = self.places[self.current_player] + roll if self.places[self.current_player] > 11: self.places[self.current_player] = self.places[self.current_player] - 12 - print self.players[self.current_player] + \ + print (self.players[self.current_player] + \ '\'s new location is ' + \ - str(self.places[self.current_player]) - print "The category is %s" % self._current_category + str(self.places[self.current_player])) + print ("The category is %s" % self._current_category) self._ask_question() def _ask_question(self): - if self._current_category == 'Pop': print self.pop_questions.pop(0) - if self._current_category == 'Science': print self.science_questions.pop(0) - if self._current_category == 'Sports': print self.sports_questions.pop(0) - if self._current_category == 'Rock': print self.rock_questions.pop(0) + if self._current_category == 'Pop': print (self.pop_questions.pop(0)) + if self._current_category == 'Science': print (self.science_questions.pop(0)) + if self._current_category == 'Sports': print (self.sports_questions.pop(0)) + if self._current_category == 'Rock': print (self.rock_questions.pop(0)) @property def _current_category(self): @@ -96,12 +96,12 @@ def _current_category(self): def was_correctly_answered(self): if self.in_penalty_box[self.current_player]: if self.is_getting_out_of_penalty_box: - print 'Answer was correct!!!!' + print ('Answer was correct!!!!') self.purses[self.current_player] += 1 - print self.players[self.current_player] + \ + print (self.players[self.current_player] + \ ' now has ' + \ str(self.purses[self.current_player]) + \ - ' Gold Coins.' + ' Gold Coins.') winner = self._did_player_win() self.current_player += 1 @@ -117,12 +117,12 @@ def was_correctly_answered(self): else: - print "Answer was corrent!!!!" + print ("Answer was corrent!!!!") self.purses[self.current_player] += 1 - print self.players[self.current_player] + \ + print (self.players[self.current_player] + \ ' now has ' + \ str(self.purses[self.current_player]) + \ - ' Gold Coins.' + ' Gold Coins.') winner = self._did_player_win() self.current_player += 1 @@ -131,8 +131,8 @@ def was_correctly_answered(self): return winner def wrong_answer(self): - print 'Question was incorrectly answered' - print self.players[self.current_player] + " was sent to the penalty box" + print ('Question was incorrectly answered') + print (self.players[self.current_player] + " was sent to the penalty box") self.in_penalty_box[self.current_player] = True self.current_player += 1 @@ -145,7 +145,7 @@ def _did_player_win(self): from random import randrange -if __name__ == '__main__': +def main(): not_a_winner = False game = Game() @@ -163,3 +163,6 @@ def _did_player_win(self): not_a_winner = game.was_correctly_answered() if not not_a_winner: break + +if __name__ == '__main__': + main() diff --git a/texttests/.gitignore b/texttests/.gitignore new file mode 100644 index 0000000000..5ceb3864c2 --- /dev/null +++ b/texttests/.gitignore @@ -0,0 +1 @@ +venv diff --git a/texttests/config.gr b/texttests/config.gr new file mode 100644 index 0000000000..59f8de5538 --- /dev/null +++ b/texttests/config.gr @@ -0,0 +1,17 @@ +full_name:Trivia Kata + +# set your preferred editor and diff tool. +view_program:subl +diff_program:diff + +# Settings for the Python version +executable:${TEXTTEST_HOME}/python/texttest_fixture.py +interpreter:python3 + +# Settings for the C++ version +#executable:${TEXTTEST_HOME}/C++/build/Trivia + +# Settings for the C version +#executable:${TEXTTEST_HOME}/C/build/trivia + +filename_convention_scheme:standard diff --git a/texttests/default/stderr.gr b/texttests/default/stderr.gr new file mode 100644 index 0000000000..e69de29bb2 diff --git a/texttests/default/stdout.gr b/texttests/default/stdout.gr new file mode 100644 index 0000000000..cb291497b4 --- /dev/null +++ b/texttests/default/stdout.gr @@ -0,0 +1,3 @@ +################################################################## +# Replace stdout.gr by approiving the first result from texttest # +################################################################## diff --git a/texttests/testsuite.gr b/texttests/testsuite.gr new file mode 100644 index 0000000000..4ad96d5159 --- /dev/null +++ b/texttests/testsuite.gr @@ -0,0 +1 @@ +default