def test_players_db(self): """ Testing player functions player.insert_player_into_db player.get_players_from_db player.get_player_from_db_by_name player.update_player_by_name """ clear_tables(self.db) # test empty players test_players = player.get_players_from_db(GAME_ID1, self.db) assert (test_players == []) test_names = player.get_player_names_from_db(GAME_ID1, self.db) assert (test_names == []) # insert player test_player = player.Player (*TEST_PLAYER_VALUES1) player.insert_player_into_db(test_player, self.db) db_player = player.get_players_from_db(test_player.game_id, self.db)[0] assert db_player == test_player # get player db_player2 = player.get_player_from_db_by_name(db_player.name, db_player.game_id, self.db) assert(db_player2 == db_player) # update player cur_id = db_player.id_num db_player.id_num = cur_id + 1 player.update_player_by_name(db_player, self.db) # get player new_db_player = player.get_player_from_db_by_name( db_player.name, db_player.game_id, self.db) assert(new_db_player.id_num == db_player.id_num)
def set_relationship(rel1_role, rel1_option, rel1_player, rel2_role, rel2_option, rel2_player, cur_player_name, pset, game_id, db): """ Updates the database - sets the relationships for one of the neighbor pairs """ rel_indices = playset.get_relationship_indices(rel1_role, rel2_role, rel1_option, rel2_option, pset) if not rel_indices: return ERROR_INVALID_RELATIONSHIP_VALUES # check if dice are ok game_dice = dice.get_dice_from_db(game_id, db) if game_dice.dice_dic[rel_indices[1]+1] <= 0: return ERROR_NOT_ENOUGH_DICE p1 = player.get_player_from_db_by_name(rel1_player, game_id, db) p2 = player.get_player_from_db_by_name(rel2_player, game_id, db) if not p1 or not p2: return ERROR_INVALID_PLAYERS if not rel1_player == cur_player_name and not rel2_player == cur_player_name: return ERROR_CURRENT_PLAYER_NOT_IN_RELATIONSHIP if rel1_player == rel2_player: return ERROR_PLAYERS_MUST_BE_DIFFERENT if p1.p_left_name == p2.name: # neighor is to the left set_left_relationship(rel1_role, rel1_option, playset.get_relationship_id_from_indices( rel_indices, flip_a_b=False), p1, db) set_right_relationship(rel2_role, rel2_option, playset.get_relationship_id_from_indices( rel_indices, flip_a_b=True), p2, db) elif p1.p_right_name == p2.name: # neighbor is to the right set_right_relationship(rel1_role, rel1_option, playset.get_relationship_id_from_indices( rel_indices, flip_a_b=False), p1, db) set_left_relationship(rel2_role, rel2_option, playset.get_relationship_id_from_indices( rel_indices, flip_a_b=True), p2, db) player.update_player_by_name(p1, db) player.update_player_by_name(p2, db) return NO_ERROR
def play(): player_names = player.get_player_names_from_db(GAME_ID, get_db()) cur_player_name = game_control.player_name_check(request.args.get('player',''), session['player'], player_names) if cur_player_name: session['player'] = cur_player_name else: return render_template('select_player.html', players=player_names) if status.get_round_from_db(GAME_ID, get_db()) == -1: game_control.initialize_game(GAME_ID, get_db()) cur_player = player.get_player_from_db_by_name(cur_player_name, GAME_ID, get_db()) pd = playset.parse_playset('/Users/danielsprechman/development/projects/fiasco/playset_main_st.txt') return render_template('play.html', player=session['player'], playset_name='Main St.', dice_html=view.get_dice_html(dice.get_dice_from_db(GAME_ID, get_db()).dice), neighbors=[cur_player.p_left_name, cur_player.p_right_name], playset_html = view.get_playset_html(pd, get_db(), cur_player_name, GAME_ID))
def get_playset_html(pset, db, cur_player_name, game_id): playset_html = '<h2>Relationships</h2>\n' cur_player = player.get_player_from_db_by_name(cur_player_name, game_id, db) for i,entry_group in enumerate(pset.relationships): entry_id = "rel_" + str(i+1) # 1. family enable for: player1 player2 playset_html += "\n<div class=\"row\"><div class=\"col-md-4\"><h3>" + str(i+1) + ". " + entry_group.title + "</h3></div>\n" + \ "<div class=\"col-md-4 well-lg\">" + \ "<form class=\"form-inline\">Enable for: " + \ "<label class=\"checkbox\"><input type=\"checkbox\" entry_id=\"" + entry_id + "\"value = \"" + cur_player.p_left_name + "\" class=\"player_check player_check1\"> " + cur_player.p_left_name + "</input></label> " + \ "<label class=\"checkbox\"><input type=\"checkbox\" entry_id=\"" + entry_id + "\" value = \"" + cur_player.p_right_name + "\" class=\"player_check player_check2\"> " + cur_player.p_right_name + "</input></label>" + \ "</form></div></div>\n" + \ '\n<ul class="list-group" id="' + entry_id + '">' for j,entry in enumerate(entry_group.entries): entry_id_e = entry_id + "e" + str(j) select_html1 = '' select_html2 = '' for k, option in enumerate(entry.rel_a_options): if k == 0: select_html1 = ' (\n<select class="btn btn-mini rel_select1">' select_html1 += '<option val="'+ entry_id_e + '_g1_o' + str(k) +'">' + option + '</option>' if k == len(entry.rel_a_options)-1: select_html1 += '</select>)' for k, option in enumerate(entry.rel_b_options): if k == 0: select_html2 = ' (\n<select class="btn btn-mini rel_select2">' select_html2 += '<option val="'+ entry_id_e + '_g2_o' + str(j) +'">' + option + '</option>' if k == len(entry.rel_a_options)-1: select_html2 += '</select>)' playset_html += '<li class="p_rel_item list-group-item disabled">' + \ '<input type="radio" disabled="true" id="radio_' + entry_id_e + '" class="radio_rel">' + \ ' ' + str(j+1) + '. ' + \ '<span class="g1_text">' + entry.rel_a + '</span>' + select_html1 + \ ' / <span class="g2_text">' + \ entry.rel_b + '</span>' + select_html2 + '</li>' playset_html += '</ul>\n' return playset_html
def test_game_control(self): """ Testing game_control functions game_control.initialize_game """ clear_tables(self.db) p1 = player.Player(*TEST_PLAYER_VALUES1) p2 = player.Player(*TEST_PLAYER_VALUES2) p3 = player.Player(*TEST_PLAYER_VALUES3) # insert players into db player.insert_player_into_db(p1, self.db) player.insert_player_into_db(p2, self.db) player.insert_player_into_db(p3, self.db) # initialize game game_control.initialize_game(p1.game_id, self.db) # get the updated player information p1 = player.get_player_from_db_by_name(p1.name, p1.game_id, self.db) p2 = player.get_player_from_db_by_name(p2.name, p2.game_id, self.db) p3 = player.get_player_from_db_by_name(p3.name, p3.game_id, self.db) # In a 3 person game, everyone should be neighbors with eachother assert(p1.p_left_name in [p2.name, p3.name]) assert(p1.p_right_name in [p2.name, p3.name]) assert(not p1.p_left_name == p1.p_right_name) assert(p2.p_left_name in [p1.name, p3.name]) assert(p2.p_right_name in [p1.name, p3.name]) assert(not p2.p_left_name == p2.p_right_name) assert(p3.p_left_name in [p1.name, p2.name]) assert(p3.p_right_name in [p1.name, p2.name]) assert(not p3.p_left_name == p3.p_right_name) # try setting relationships # first prepare the dice, so that there's enough for all the tests dice.insert_dice_into_db(dice.Dice({0:100,1:100,2:100,3:100,4:100,5:100,6:100},p1.game_id), self.db) test_playset = playset.parse_playset(TEST_PLAYSET) # p1 and p2: mayor / health commissioner # p1 and p3: drug dealer / drug manufacturer # p2 and p3: plumber / client p1_p2_rel_opt = ('elected official', 'mayor') p2_p1_rel_opt = ('elected official', 'health commissioner') p1_p3_rel_opt = ('drug person', 'dealer') p3_p1_rel_opt = ('drug person', 'manufacturer') p2_p3_rel_opt = ('tradesman', 'plumber') p3_p2_rel_opt = ('client', '') retval = game_control.set_relationship(p1_p2_rel_opt[0], p1_p2_rel_opt[1], p1.name, p2_p1_rel_opt[0], p2_p1_rel_opt[1], p2.name, p1.name, test_playset, p1.game_id, self.db) assert (retval == game_control.NO_ERROR) retval = game_control.set_relationship(p1_p3_rel_opt[0], p1_p3_rel_opt[1], p1.name, p3_p1_rel_opt[0], p3_p1_rel_opt[1], p3.name, p3.name, test_playset, p1.game_id, self.db) assert (retval == game_control.NO_ERROR) retval = game_control.set_relationship(p2_p3_rel_opt[0], p2_p3_rel_opt[1], p2.name, p3_p2_rel_opt[0], p3_p2_rel_opt[1], p3.name, p3.name, test_playset, p1.game_id, self.db) assert (retval == game_control.NO_ERROR) # get the updated player information p1 = player.get_player_from_db_by_name(p1.name, p1.game_id, self.db) p2 = player.get_player_from_db_by_name(p2.name, p2.game_id, self.db) p3 = player.get_player_from_db_by_name(p3.name, p3.game_id, self.db) #print_player_info(p1) #print_player_info(p2) #print_player_info(p3) # In a 3 person game, everyone should be neighbors with eachother if p1.p_left_name == p2.name: # for player 1: left is p2, right is p3 assert p1_p2_rel_opt == (p1.rel_l_role, p1.rel_l_option) assert p1_p3_rel_opt == (p1.rel_r_role, p1.rel_r_option) # for player 3: left is p1, right is p2 assert p3_p1_rel_opt == (p3.rel_l_role, p3.rel_l_option) assert p3_p2_rel_opt == (p3.rel_r_role, p3.rel_r_option) # for palyer 2: left is p3, right is p1 assert p2_p3_rel_opt == (p2.rel_l_role, p2.rel_l_option) assert p2_p1_rel_opt == (p2.rel_r_role, p2.rel_r_option) elif p1.p_left_name == p3.name: # for player 1: left is p3, right is p2 assert p1_p3_rel_opt == (p1.rel_l_role, p1.rel_l_option) assert p1_p2_rel_opt == (p1.rel_r_role, p1.rel_r_option) # for player 3: left is p2, right is p1 assert p3_p2_rel_opt == (p3.rel_l_role, p3.rel_l_option) assert p3_p1_rel_opt == (p3.rel_r_role, p3.rel_r_option) # for palyer 2: left is p1, right is p3 assert p2_p1_rel_opt == (p2.rel_l_role, p2.rel_l_option) assert p2_p3_rel_opt == (p2.rel_r_role, p2.rel_r_option) else: # this should not happen assert False