Example #1
0
class TestActions(unittest.TestCase):
    def set_up(self):
        self.actions = Actions()
        # Actions.reset()

    #addAction
    def test_addAction_invalidString(self):
        self.set_up()
        #JSON Decode Error
        err = self.actions.addAction('')
        self.assertEqual(err, -1)

        err = self.actions.addAction('{"action":"jump", "time:1}')
        self.assertEqual(err, -1)

        err = self.actions.addAction('{"action":jump, "time":1}')
        self.assertEqual(err, -1)

        err = self.actions.addAction('"action":jump, "time":1}')
        self.assertEqual(err, -1)

        #Attribute Error
        err = self.actions.addAction('{"action":10, "time": "hey"}')
        self.assertEqual(err, -2)

    def test_addAction_missingInputs(self):
        self.set_up()
        #Missing input
        err = self.actions.addAction('{"action":"", "time":10}')
        self.assertEqual(err, -4)

        #Value Error
        err = self.actions.addAction('{"action":"run", "time":""}')
        self.assertEqual(err, -3)

    def test_addAction_verifyAdd(self):
        self.set_up()
        ret = self.actions.addAction('{"action":"jump", "time":100}')
        self.assertEqual(ret, 0)
        ret = self.actions.addAction('{"action":"run", "time":75}')
        self.assertEqual(ret, 0)
        ret = self.actions.addAction('{"action":"jump", "time":200}')
        self.assertEqual(ret, 0)
        avg = self.actions.getStats()
        self.assertEqual(
            avg, '[{"action":"jump","avg":150.0},{"action":"run","avg":75.0}]')

    def test_addAction_raceCondition(self):
        self.set_up()
        for i in range(5):
            string = '{"action":"jump", "time":' + str(100 * i) + '}'
            t = threading.Thread(target=addActionWorker,
                                 args=(self.actions, string))
            t.start()
        main_thread = threading.currentThread()
        for t in threading.enumerate():
            if t is not main_thread:
                t.join()
        avg = self.actions.getStats()
        self.assertEqual(avg, '[{"action":"jump","avg":200.0}]')

    #getStats
    def test_getStats_noData(self):
        self.set_up()
        avg = self.actions.getStats()
        self.assertEqual(avg, '')