예제 #1
0
    def test_joinGameCorrectlyAddsUserIntoGame(self):
        file = open('gunid', 'r+')
        file.truncate()
        file.write(
            "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n"
        )
        file.close()
        gun = Gun()
        gun.readIDFile()

        mydb = connect.connect()
        cursor = mydb.cursor()
        sql = "INSERT INTO Games (current_state, winner, game_date) VALUES (1, 0, (NOW() - INTERVAL 4 HOUR + INTERVAL 11 MINUTE - INTERVAL 22 SECOND))"
        cursor.execute(sql)
        mydb.commit()

        gun.joinGame()

        sql = "SELECT * FROM (Games INNER JOIN Game_Users ON Games.id = Game_Users.game_id) WHERE Games.current_state = 1"
        cursor.execute(sql)
        myresult = cursor.fetchall()
        self.assertEqual(len(myresult), 1)  #only one row added to database
        self.assertEqual(myresult[0][5], 3)  #gunid is 3
        self.assertEqual(myresult[0][6], "Benjamin")  #username is Benjamin

        sql = "UPDATE Games SET current_state=0 WHERE current_state=1"
        cursor.execute(sql)
        mydb.commit()

        mydb.close()
예제 #2
0
    def test_loseGameReturnsTrueWhenThereIsAnOpponentInGame(self):
        file = open('gunid', 'r+')
        file.truncate()
        file.write(
            "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n"
        )
        file.close()
        gun = Gun()
        gun.readIDFile()

        file = open('gunid', 'r+')
        file.truncate()
        file.write(
            "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=4\nusername=Thomas\n"
        )
        file.close()
        gun2 = Gun()
        gun2.readIDFile()

        mydb = connect.connect()
        cursor = mydb.cursor()
        sql = "INSERT INTO Games (current_state, winner, game_date) VALUES (2, 0, (NOW() - INTERVAL 4 HOUR + INTERVAL 11 MINUTE - INTERVAL 22 SECOND))"
        cursor.execute(sql)
        mydb.commit()

        gun.joinGame()
        gun2.joinGame()

        self.assertTrue(gun2.loseGame())

        mydb.close()
예제 #3
0
    def test_loseGameCorrectlyUpdatesWinnerStats(self):
        file = open('gunid', 'r+')
        file.truncate()
        file.write(
            "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n"
        )
        file.close()
        gun = Gun()
        gun.readIDFile()

        file = open('gunid', 'r+')
        file.truncate()
        file.write(
            "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=4\nusername=Thomas\n"
        )
        file.close()
        gun2 = Gun()
        gun2.readIDFile()

        mydb = connect.connect()
        cursor = mydb.cursor()
        sql = "INSERT INTO Games (current_state, winner, game_date) VALUES (2, 0, (NOW() - INTERVAL 4 HOUR + INTERVAL 11 MINUTE - INTERVAL 22 SECOND))"
        cursor.execute(sql)
        mydb.commit()

        sql = "SELECT * FROM Guns WHERE gun=3"
        cursor.execute(sql)
        myresult = cursor.fetchall()
        oldGunWins = myresult[0][1]

        sql = "SELECT * FROM Players WHERE username='******'"
        cursor.execute(sql)
        myresult = cursor.fetchall()
        oldPlayerWins = myresult[0][1]

        gun.joinGame()
        gun2.joinGame()
        gun2.loseGame()

        sql = "SELECT * FROM Guns WHERE gun=3"
        cursor.execute(sql)
        myresult = cursor.fetchall()
        newGunWins = myresult[0][1]

        sql = "SELECT * FROM Players WHERE username='******'"
        cursor.execute(sql)
        myresult = cursor.fetchall()
        newPlayerWins = myresult[0][1]

        self.assertEqual((oldGunWins + 1), newGunWins)
        self.assertEqual((oldPlayerWins + 1), newPlayerWins)

        mydb.close()
예제 #4
0
 def test_joinGameReturnsFalseWhenThereIsNoActiveGame(self):
     file = open('gunid', 'r+')
     file.truncate()
     file.write(
         "# User Identification File.\n# Change gunid and username.\n# Rename file to gunid.\ngunid=3\nusername=Benjamin\n"
     )
     file.close()
     gun = Gun()
     gun.readIDFile()
     self.assertFalse(gun.joinGame())
예제 #5
0
#prog defined in ~/.lircrc
prog = "guns"

try:
    sockid = lirc.init(prog, blocking=False)
    trigger = Trigger()
    trigger.addTrigger()
    gun = Gun()
    led = LED()
    hp = 3
    if (not gun.readIDFile()): quit()
    inGame = False
    while True:
        while not inGame:
            joined = gun.joinGame()
            if joined:
                inGame = True
                hp = 3
            led.toggleLED('red')
            sleep(0.5)
        while inGame:
            if hp == 3:
                led.toggleLED('green')
                led.setLED('red', 'off')
            elif hp == 2:
                led.toggleLED('green')
                led.setLED('red', 'on')
            else:
                led.toggleLED('green')
                led.toggleLED('red')