예제 #1
0
class IntegrationTest(unittest.TestCase):
    app = None

    TestUserName = "******"

    @classmethod
    def setUpClass(cls):
        global app
        app = QtGui.QApplication([])

    def setUp(self):
        self.db = Database()
        self.db.createUser("testUserRealName", IntegrationTest.TestUserName, "testUserPassword0$")
        self.game = Game()
        self.game.username = IntegrationTest.TestUserName
        self.game.loginWidget.loggedUsername = IntegrationTest.TestUserName
        self.game.showBoard(1)

    def tearDown(self):
        self.db.deleteAccount(IntegrationTest.TestUserName)
        self.game.board_widget.stopTimers()
        self.game.board_widget.statusBar.destroy()
        self.game.board_widget.exit()
        self.game.board_widget.destroy()
        self.game.destroy()

    @classmethod
    def tearDownClass(cls):
        app.quit()

    def testKillEnemiesOnBoardUpdateDb(self):
        self.assertTrue(self.db.hasUser(IntegrationTest.TestUserName))

        self.game.board_widget.level.clearEnemies()
        self.game.board_widget.setTileAt(2, 1, Tile.Balloom)
        self.game.board_widget.level.bomberman.curX = 1
        self.game.board_widget.level.bomberman.curY = 1
        self.game.board_widget.level.setBomberman()
        self.game.board_widget.level.setBomb()

        tempList = [2, 1, constant.DIRECTION_WEST, Tile.Balloom]
        self.game.board_widget.level.listEnemies.append(tempList)

        self.game.board_widget.level.numberEnemies = 1
        self.game.board_widget.level.listTypeEnemies[0] = 1
        self.game.board_widget.level.bomberman.rangeOfBombs = 3

        self.game.board_widget.detonateBomb()

        self.assertEqual(self.game.board_widget.tileAt(2, 1), Tile.Empty, "Bomb detonation did not kill enemy")
        self.assertEqual(0, self.game.board_widget.level.numberEnemies, "Enemy was not removed from map")

        self.assertEqual(self.db.getUserAccount(IntegrationTest.TestUserName)['cumulativeScore'], 100)
예제 #2
0
class TestDatabase(unittest.TestCase):
    TestRealName = "Test User"
    TestValidUsername1 = "testUser1"
    TestValidUsername2 = "testUser2"
    TestValidRealname = "testRealName"
    TestInvalidUsernameEmpty = ""
    TestInvalidUsernameTooShort = "user1"
    TestValidPassword = "******"
    TestInvalidPasswordTooShort = "De@1"
    TestInvalidPasswordNoSpecial = "testPassword0"
    TestInvalidPasswordNoDigit = "testPassword$"
    TestInvalidPasswordNoUpper = "testpassword$0"
    TestInvalidPasswordNoLower = "TESTPASSWORD$0"

    def setUp(self):
        self.db = Database(True)

    def testCreateUser(self):
        self.assertFalse(self.db.hasUser(TestDatabase.TestValidUsername1))
        self.createTestUser1()
        self.assertTrue(self.db.hasUser(TestDatabase.TestValidUsername1))

    def testUpdateUserAccountWithExistingUsername(self):
        self.createTestUser1()
        self.createTestUser2()
        self.assertFalse(self.db.updateUserAccount(TestDatabase.TestValidUsername1, TestDatabase.TestValidUsername2, TestDatabase.TestValidRealname, TestDatabase.TestValidPassword))

    def testUpdateUserAccountWithValidCredentials(self):
        self.createTestUser1()
        self.assertFalse(self.db.hasUser(TestDatabase.TestValidUsername2))
        self.assertTrue(self.db.updateUserAccount(TestDatabase.TestValidUsername1, TestDatabase.TestValidUsername2, TestDatabase.TestValidRealname, TestDatabase.TestValidPassword))
        self.assertTrue(self.db.hasUser(TestDatabase.TestValidUsername2))

    def testIsValidUsername(self):
        self.assertTrue(self.db.isValidUsername(TestDatabase.TestValidUsername1))
        self.assertFalse(self.db.isValidUsername(TestDatabase.TestInvalidUsernameEmpty))
        self.assertFalse(self.db.isValidUsername(TestDatabase.TestInvalidUsernameTooShort))

    def testIsValidPassword(self):
        self.assertTrue(self.db.isValidPassword(TestDatabase.TestValidPassword))
        self.assertFalse(self.db.isValidPassword(TestDatabase.TestInvalidPasswordTooShort))
        self.assertFalse(self.db.isValidPassword(TestDatabase.TestInvalidPasswordNoSpecial))
        self.assertFalse(self.db.isValidPassword(TestDatabase.TestInvalidPasswordNoDigit))
        self.assertFalse(self.db.isValidPassword(TestDatabase.TestInvalidPasswordNoLower))
        self.assertFalse(self.db.isValidPassword(TestDatabase.TestInvalidPasswordNoUpper))

    def testGetTopTenUsers(self):
        self.db.createUserAccountsForDemo()
        users = self.db.getTopTenUsers()

        iter = users.__iter__()
        self.assertEqual(iter.__next__()['username'], "Demo05")
        self.assertEqual(iter.__next__()['username'], "Demo06")
        self.assertEqual(iter.__next__()['username'], "Demo07")
        self.assertEqual(iter.__next__()['username'], "Demo04")
        self.assertEqual(iter.__next__()['username'], "Demo03")
        self.assertEqual(iter.__next__()['username'], "Demo10")
        self.assertEqual(iter.__next__()['username'], "Demo09")
        self.assertEqual(iter.__next__()['username'], "Demo01")
        self.assertEqual(iter.__next__()['username'], "Demo02")
        self.assertEqual(iter.__next__()['username'], "Demo08")

    def testGetHighestUnlockedLevel(self):
        self.db.createUserAccountsForDemo()
        self.assertEqual(self.db.getHighestUnlockedLevel("Demo01"), 11)
        self.assertEqual(self.db.getHighestUnlockedLevel("Demo05"), 15)

        self.createTestUser1()
        self.assertEqual(self.db.getHighestUnlockedLevel(TestDatabase.TestValidUsername1), 1)

    def testUpdateUserScore(self):
        self.db.createUserAccountsForDemo()
        self.assertEqual(self.db.getUserAccount("Demo05")['cumulativeScore'], 16000)
        self.db.updateUserScore("Demo05", 0)
        self.assertEqual(self.db.getUserAccount("Demo05")['cumulativeScore'], 16000)
        self.db.updateUserScore("Demo05", 1000)
        self.assertEqual(self.db.getUserAccount("Demo05")['cumulativeScore'], 17000)

    def testUpdateNumGamesPlayed(self):
        self.createTestUser1()
        self.assertEqual(self.db.getUserAccount(TestDatabase.TestValidUsername1)['numGamesPlayed'], 0)
        self.db.incrementNumOfGamesPlayed(TestDatabase.TestValidUsername1)
        self.assertEqual(self.db.getUserAccount(TestDatabase.TestValidUsername1)['numGamesPlayed'], 1)

    def createTestUser1(self):
        self.db.createUser(TestDatabase.TestRealName, TestDatabase.TestValidUsername1, TestDatabase.TestInvalidPasswordNoSpecial)

    def createTestUser2(self):
        self.db.createUser(TestDatabase.TestRealName, TestDatabase.TestValidUsername2, TestDatabase.TestInvalidPasswordNoSpecial)