def test_if_can_update_player_on_leaderboard_and_if_can_update_leaderboard( self): test_ranked_data = [{ "duration": 250, "rank": 1, "score": 90, "username": "******" }, { "duration": 400, "rank": 2, "score": 55, "username": "******" }, { "duration": 200, "rank": 3, "score": 50, "username": "******" }] leaderboard_single.update_leaderboard(test_ranked_data) data = files.read_data_file("leaderboard") test_player = { "duration": 300, "rank": 2, "score": 90, "username": "******" } leaderboard_single.update_player_on_leaderboard(test_player, data) test_player_two = { "duration": 500, "rank": 2, "score": 95, "username": "******" } leaderboard_single.update_player_on_leaderboard(test_player_two, data) test_ranked_data_two = [{ "duration": 500, "rank": 1, "score": 95, "username": "******" }, { "duration": 250, "rank": 2, "score": 90, "username": "******" }, { "duration": 200, "rank": 3, "score": 50, "username": "******" }] data = files.read_data_file("leaderboard") self.assertEqual(test_ranked_data_two, data) empty_data = [] leaderboard_single.update_leaderboard(empty_data)
def test_if_can_append_to_file(self): data = files.read_data_file("countries") data_copy = data self.assertNotIn("hello", data) files.append_to_file("hello", "countries") data_updated = files.read_data_file("countries") self.assertIn("hello", data_updated) files.overwrite_file("countries", data_copy)
def test_if_file_can_be_overwritten(self): data = files.read_data_file("countries") data_copy = data self.assertEqual(200, len(data)) files.overwrite_file("countries", "hello") data_overwritten = files.read_data_file("countries") self.assertEqual(5, len(data_overwritten)) self.assertEqual("hello", data_overwritten) files.overwrite_file("countries", data_copy)
def test_if_can_remove_games_older_than_a_day(self): files.append_to_file(game_multi.create_game("testGame31"), "game_multi") creation_time = game_multi.extract_value_from_game("testGame31", "time_of_creation") current_time = time.time() game_multi.remove_games_older_than_a_day(current_time) data = files.read_data_file("game_multi") game = game_multi.select_game("testGame31", data) self.assertIn(game, data) day_from_now = current_time + 86400 game_multi.remove_games_older_than_a_day(day_from_now) data_two = files.read_data_file("game_multi") self.assertNotIn(game, data_two)
def append_incorrect_answers(username, answer): data = files.read_data_file("users") target_game = select_game_of_player(username, data) target_game["incorrect_answers"].append(answer) overwrite_game(username, target_game, data)
def remove_games_older_than_a_day(current_time): data = files.read_data_file("game_multi") for game in data: if game["time_of_creation"] + 86400 < current_time: remove_game_from_data(game["game_name"])
def check_if_username_exists(username): data = files.read_data_file("users") if any(obj["username"] == username for obj in data): return True else: return False
def test_that_a_game_can_be_overwritten(self): game = game_multi.create_game("testGame3") files.append_to_file(game, "game_multi") data = files.read_data_file("game_multi") game = game_multi.select_game("testGame3", data) self.assertEqual(game, game) test_game = { "game_name": "testGame3", "time_of_creation": 0, "players": 0, "players_copy": 0, "round_number": 0, "flag_number": 0, "turn_of_player": 0, "points": 0, "list_of_countries": 0, "game_state": 0 } game_multi.overwrite_game("testGame3", test_game, data) overwritten_game = game_multi.select_game("testGame3", data) self.assertEqual(0, overwritten_game["players"]) self.assertEqual(0, overwritten_game["game_state"]) self.assertEqual(0, overwritten_game["points"]) self.assertEqual(0, overwritten_game["round_number"]) game_multi.remove_game_from_data("testGame3")
def check_if_game_exists(game_name): data = files.read_data_file("game_multi") if any(game["game_name"] == game_name for game in data): return True else: return False
def test_if_target_game_can_be_selected_by_name(self): game = game_multi.create_game("testGame2") files.append_to_file(game, "game_multi") data = files.read_data_file("game_multi") game = game_multi.select_game("testGame2", data) self.assertEqual(game, game) game_multi.remove_game_from_data("testGame2")
def overwrite_game_value(game_name, key_name, value): data = files.read_data_file("game_multi") for game in data: if game["game_name"] == game_name: game[key_name] = value files.overwrite_file("game_multi", data)
def check_if_player_exists(game_name, username): data = files.read_data_file("game_multi") target_game = select_game(game_name, data) list_of_players = target_game["players"] if any(player["username"] == username for player in list_of_players): return True else: return False
def remove_player_from_data_by_index(index): data = files.read_data_file("users") if index > len(data): return False else: data.pop(index) files.overwrite_file("users", data)
def return_player_score(username): data = files.read_data_file("users") current_user = {} for user in data: if user["username"] == username: current_user = user return current_user["score"]
def remove_game_from_data(game_name): data = files.read_data_file("game_multi") updated_data = [] for game in data: if game["game_name"] != game_name: updated_data.append(game) files.overwrite_file("game_multi", updated_data)
def check_if_password_matches(username, password): data = files.read_data_file("users") for player in data: if player["username"] == username: if player["password"] == password: return True else: return False
def return_player_by_turn(turn_of_player, game_name): data = files.read_data_file("game_multi") player_list = [] for game in data: if game["game_name"] == game_name: player_list = game["players"] return player_list[turn_of_player]
def update_player_list(game_name): data = files.read_data_file("game_multi") sorted_players = change_rank_of_players((game_name)) for game in data: if game["game_name"] == game_name: game["players"] = sorted_players files.overwrite_file("game_multi", data)
def check_if_five_players(game_name): data = files.read_data_file("game_multi") target_game = select_game(game_name, data) list_of_players = target_game["players"] if len(list_of_players) == 5: return True else: return False
def test_if_can_remove_user_by_index(self): file_path = files.create_file_path("users") data = files.read_data_file("users") data_length = len(data) users.add_player_to_data("testUser6", "none", "none") users.add_player_to_data("testUser7", "none", "none") user_index_zero = users.create_player("testUser6", "none", 0, "none") user_index_one = users.create_player("testUser7", "none", 0, "none") data_two = files.read_data_file("users") self.assertEqual(data_two[data_length], user_index_zero) users.remove_player_from_data_by_index(data_length) data_three = files.read_data_file("users") self.assertEqual(data_three[data_length], user_index_one) users.remove_player_from_data_by_index(data_length)
def remove_player_from_data(username): data = files.read_data_file("users") updated_data = [] for obj in data: if obj["username"] != username: updated_data.append(obj) files.overwrite_file("users", updated_data)
def test_if_can_extract_value_for_given_key_from_target_game(self): files.append_to_file(game_multi.create_game("testGame7"), "game_multi") data = files.read_data_file("game_multi") game = game_multi.select_game("testGame7", data) self.assertEqual(1, game["round_number"]) extracted_value = game_multi.extract_value_from_game("testGame7", "round_number") self.assertEqual(extracted_value, game["round_number"]) game_multi.remove_game_from_data("testGame7")
def decrease_points(game_name): data = files.read_data_file("game_multi") target_game = select_game(game_name, data) if target_game["points"] == 1: target_game["points"] = 0 else: target_game["points"] -= 2 overwrite_game(game_name, target_game, data)
def list_players_elapsed_time(game_name): data = files.read_data_file("game_multi") list_of_players = extract_value_from_game(game_name, "players") list_of_player_times = [] for player in list_of_players: player_time = misc.convert_time_for_display(player["elapsed_time"]) list_of_player_times.append(player_time) return list_of_player_times
def decrease_round_points(username): data = files.read_data_file("users") target_game = select_game_of_player(username, data) if target_game["points"] < 2: target_game["points"] = 0 else: target_game["points"] -= 2 overwrite_game(username, target_game, data)
def sort_players_for_leaderboard_display(game_name): data = files.read_data_file("game_multi") list_of_players = extract_value_from_game(game_name, "players") players_sorted_by_game_duration = sorted(list_of_players, key=itemgetter('elapsed_time')) players_sorted_by_score = sorted(players_sorted_by_game_duration, key=itemgetter('score'), reverse=True) for game in data: if game["game_name"] == game_name: game["players"] = players_sorted_by_score return players_sorted_by_score
def set_turn_of_player(game_name, number_of_players): data = files.read_data_file("game_multi") target_game = select_game(game_name, data) if target_game["turn_of_player"] == number_of_players - 1: # number_of_players - 1 = last player's index number target_game["turn_of_player"] = 0 else: target_game["turn_of_player"] += 1 overwrite_game(game_name, target_game, data)
def increase_player_score(username, points): data = files.read_data_file("users") current_user = {} for user in data: if user["username"] == username: current_user = user current_user["score"] += points files.overwrite_file("users", data)
def test_if_player_can_be_added_to_game(self): files.append_to_file(game_multi.create_game("testGame4"), "game_multi") data = files.read_data_file("game_multi") game = game_multi.select_game("testGame4", data) self.assertEqual([], game["players"]) test_player = { "username": "******", "score": 0, "rank": 0, "start_time": 0.0, "elapsed_time": 0.0, "incorrect_answers": [] } game_multi.add_player_to_game("testGame4", test_player) data_two = files.read_data_file("game_multi") game_two = game_multi.select_game("testGame4", data_two) self.assertIn(test_player, game_two["players"]) game_multi.remove_game_from_data("testGame4")
def reset_player_score(username): data = files.read_data_file("users") current_user = {} for user in data: if user["username"] == username: current_user = user current_user["score"] = 0 files.overwrite_file("users", data)