def testLeftEyeFailure(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        def returnFailure(*args):
            return tobii.CalibrationResult(
                tobii.CALIBRATION_STATUS_SUCCESS_RIGHT_EYE, ())

        DummyCalibration.compute_and_apply = returnFailure

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c', 'c'])
        tobii_helper._TobiiHelper__drawCalibrationScreen(
            self.calibDict, self.calibWin)
        drawing_list = visual_mock.getListOfDrawings()

        self.assertEqual(5 * 150 + 2, len(drawing_list))
        # 5 * 150 is drawn by __getCalibrationData() (tested in another test)

        # calibration message
        message = drawing_list[0]
        self.assertTrue(isinstance(message, pvm.TextStim))
        self.assertEqual(str("Please focus your eyes on the red dot " + \
                             "and follow it with your eyes as closely as " + \
                             "possible.\n\nPress 'c' to continue."), message.text)

        # doing __getCalibrationData()

        # then message about the failure
        message = drawing_list[751]
        self.assertTrue(isinstance(message, pvm.TextStim))
        self.assertEqual(str("Calibration was not successful.\n\n" + \
                             "Closing the calibration window."), message.text)
    def testDisplaySingleText(self):
        inst_and_feedback_path = self.constructFilePath("default.txt")
        instruction_helper = asrt.InstructionHelper(inst_and_feedback_path)
        instruction_helper.read_insts_from_file()

        visual_mock = pvm.PsychoPyVisualMock()
        self.initWindow()
        instruction_helper._InstructionHelper__print_to_screen(
            "Some string with sepcial characters (é,á,ú)", self.mywindow)

        drawing_list = visual_mock.getListOfDrawings()
        self.assertEqual(len(drawing_list), 1)

        instruction_text = drawing_list[0]
        self.assertTrue(isinstance(instruction_text, pvm.TextStim))
        # size
        self.assertAlmostEqual(instruction_text.height, 0.8, delta=0.001)
        # pos
        self.assertAlmostEqual(instruction_text.pos[0], 0.0, delta=0.001)
        self.assertAlmostEqual(instruction_text.pos[1], 0.0, delta=0.001)
        # color
        self.assertEqual(instruction_text.color, "black")
        # text
        self.assertEqual(instruction_text.text,
                         str("Some string with sepcial characters (é,á,ú)"))
    def testShowExplicitFeedbackSpeedWarning(self):
        inst_and_feedback_path = self.constructFilePath("default.txt")
        instruction_helper = asrt.InstructionHelper(inst_and_feedback_path)
        instruction_helper.read_insts_from_file()

        exp_settings = asrt.ExperimentSettings("", "")
        exp_settings.experiment_type = 'reaction-time'
        exp_settings.key1 = 'z'
        exp_settings.key2 = 'c'
        exp_settings.key3 = 'b'
        exp_settings.key4 = 'm'
        exp_settings.key_quit = 'q'
        exp_settings.whether_warning = True
        exp_settings.acc_warning = 90
        exp_settings.speed_warning = 94

        visual_mock = pvm.PsychoPyVisualMock()
        self.initWindow()
        instruction_helper.feedback_explicit_RT("450.2", "410.2", "90.123",
                                                96.123, "96.123",
                                                self.mywindow, exp_settings)

        drawing_list = visual_mock.getListOfDrawings()
        self.assertEqual(len(drawing_list), 1)

        self.assertEqualWithEOL(
            drawing_list[0].text, "\r\n\r\nMost pihenhetsz egy kicsit.\r\n\r\n"
            "Pontosságod általában: 96.123 %\r\n"
            "Átlagos reakcióidőd: 450.2 másodperc\r\n"
            "Pontosságod a bejósolható elemeknél: 90.123 %\r\n"
            "Átlagos reakcióidőd a bejósolható elemeknél: 410.2 másodperc\r\n\r\n"
            "Legyél gyorsabb!\r\n\r\n\r\n\r\n")
    def testShowImplicitFeedbackQuit(self):
        inst_and_feedback_path = self.constructFilePath("default.txt")
        instruction_helper = asrt.InstructionHelper(inst_and_feedback_path)
        instruction_helper.read_insts_from_file()

        exp_settings = asrt.ExperimentSettings("", "")
        exp_settings.experiment_type = 'reaction-time'
        exp_settings.key1 = 'z'
        exp_settings.key2 = 'c'
        exp_settings.key3 = 'b'
        exp_settings.key4 = 'm'
        exp_settings.key_quit = 'q'
        exp_settings.whether_warning = True
        exp_settings.acc_warning = 90
        exp_settings.speed_warning = 94

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['q'])
        self.initWindow()
        return_value = instruction_helper.feedback_implicit_RT(
            "450.2", 92.123, "92.123", self.mywindow, exp_settings)

        self.assertEqual(return_value, "quit")

        drawing_list = visual_mock.getListOfDrawings()
        self.assertEqual(len(drawing_list), 1)

        self.assertEqualWithEOL(
            drawing_list[0].text, "\r\n\r\nMost pihenhetsz egy kicsit.\r\n\r\n"
            "Pontosságod: 92.123 %\r\n"
            "Átlagos reakcióidőd: 450.2 másodperc\r\n\r\n\r\n")
    def testShowEnding(self):
        inst_and_feedback_path = self.constructFilePath("default.txt")
        instruction_helper = asrt.InstructionHelper(inst_and_feedback_path)
        instruction_helper.read_insts_from_file()

        experiment = asrt.Experiment("")
        experiment.settings = asrt.ExperimentSettings("", "")
        experiment.settings.experiment_type = 'reaction-time'
        experiment.settings.key1 = 'z'
        experiment.settings.key2 = 'c'
        experiment.settings.key3 = 'b'
        experiment.settings.key4 = 'm'
        experiment.settings.key_quit = 'q'

        visual_mock = pvm.PsychoPyVisualMock()
        self.initWindow()
        experiment.mywindow = self.mywindow
        instruction_helper.show_ending(experiment)

        drawing_list = visual_mock.getListOfDrawings()
        self.assertEqual(len(drawing_list), 1)

        self.assertEqualWithEOL(
            drawing_list[0].text,
            "\r\n\r\nA feladat végetért. Köszönjük a részvételt!\r\n\r\n")
    def testShowUnexpectedQuit(self):
        inst_and_feedback_path = self.constructFilePath("default.txt")
        instruction_helper = asrt.InstructionHelper(inst_and_feedback_path)
        instruction_helper.read_insts_from_file()

        experiment = asrt.Experiment("")
        experiment.settings = asrt.ExperimentSettings("", "")
        experiment.settings.experiment_type = 'reaction-time'
        experiment.settings.key1 = 'z'
        experiment.settings.key2 = 'c'
        experiment.settings.key3 = 'b'
        experiment.settings.key4 = 'm'
        experiment.settings.key_quit = 'q'

        visual_mock = pvm.PsychoPyVisualMock()
        self.initWindow()
        experiment.mywindow = self.mywindow
        instruction_helper.show_unexp_quit(experiment)

        drawing_list = visual_mock.getListOfDrawings()
        self.assertEqual(len(drawing_list), 1)

        self.assertEqualWithEOL(
            drawing_list[0].text,
            "\r\n\r\nVáratlan kilépés történt a feladatból. Folytatás. A feladat indításához nyomd meg valamelyik válaszbillentyűt."
        )
    def testQuitDisplayET(self):
        inst_and_feedback_path = self.constructFilePath("default.txt")
        instruction_helper = asrt.InstructionHelper(inst_and_feedback_path)
        instruction_helper.read_insts_from_file()

        experiment = asrt.Experiment("")
        self.initWindow()
        experiment.mywindow = self.mywindow
        experiment.settings = asrt.ExperimentSettings("", "")
        experiment.settings.experiment_type = 'eye-tracking'
        experiment.settings.key_quit = 'q'
        experiment.fixation_cross_pos = (0.0, 0.0)
        experiment.fixation_cross = visual.TextStim(
            win=experiment.mywindow,
            text="+",
            height=3,
            units="cm",
            color='black',
            pos=experiment.fixation_cross_pos)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['q'])
        with self.assertRaises(SystemExit):
            instruction_helper._InstructionHelper__show_message(
                instruction_helper.ending, experiment)
    def testShowFeedbackETMoreRTData(self):
        inst_and_feedback_path = self.constructFilePath("default.txt")
        instruction_helper = asrt.InstructionHelper(inst_and_feedback_path)
        instruction_helper.read_insts_from_file()

        experiment = asrt.Experiment("")
        self.initWindow()
        experiment.mywindow = self.mywindow
        experiment.settings = asrt.ExperimentSettings("", "")
        experiment.person_data = asrt.PersonDataHandler(
            "", "", "", "", "", "eye-tracking")
        experiment.settings.experiment_type = 'eye-tracking'
        experiment.settings.key_quit = 'q'
        experiment.stimblock = {4: 10}
        experiment.last_N = 4
        experiment.last_block_RTs = [
            "0.512", "0.443", "0.335", "0.601", "0.213", "0.934", "0.912",
            "0.120"
        ]

        visual_mock = pvm.PsychoPyVisualMock()
        instruction_helper.feedback_ET(experiment)

        drawing_list = visual_mock.getListOfDrawings()
        self.assertEqual(len(drawing_list), 1)
        self.assertEqualWithEOL(
            drawing_list[0].text, "Most pihenhetsz egy kicsit.\n\n"
            "Az előző blokkokban mért átlagos reakcióidők:\n\n"
            "6. blokk: 0.601 másodperc.\n\n"
            "7. blokk: 0.213 másodperc.\n\n"
            "8. blokk: 0.934 másodperc.\n\n"
            "9. blokk: 0.912 másodperc.\n\n"
            "10. blokk: 0.120 másodperc.\n\n")
示例#9
0
    def testNoDevice(self):
        experiment = asrt.Experiment("")
        self.assertTrue(experiment.eye_tracker is None)

        self.original_find_all_eyetrackers = tobii.find_all_eyetrackers

        def find_all_eyetrackers_mock():
            return []

        tobii.find_all_eyetrackers = find_all_eyetrackers_mock

        visual_mock = pvm.PsychoPyVisualMock()
        self.initWindow()
        experiment.mywindow = self.mywindow

        with self.assertRaises(SystemExit):
            experiment.init_eyetracker()

        self.assertTrue(experiment.eye_tracker is None)
        drawing_list = visual_mock.getListOfDrawings()
        self.assertEqual(len(drawing_list), 2)

        self.assertEqual(drawing_list[0].text,
                         "Eye-tracker eszköz keresése...")
        self.assertEqual(drawing_list[1].text,
                         "Nem találtam semmilyen eye-tracker eszközt!")

        tobii.find_all_eyetrackers = self.original_find_all_eyetrackers
    def testLeftEyeOutOnBottom(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        tobii_helper.gazeData['left_gaze_origin_in_trackbox_coordinate_system'] = (0.34, -1.001, 0.81)
        tobii_helper.gazeData['right_gaze_origin_in_trackbox_coordinate_system'] = (0.32, 0.11, 0.815)
        tobii_helper.gazeData['left_gaze_origin_in_user_coordinate_system'] = (102.0, 135.52, 650.0)
        tobii_helper.gazeData['right_gaze_origin_in_user_coordinate_system'] = (96.0, 147.62, 652.2)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c', 'c'])
        tobii_helper.runTrackBox()
        drawing_list = visual_mock.getListOfDrawings()

        self.assertEqual(5, len(drawing_list))

        left_eye = drawing_list[2]
        self.assertTrue(isinstance(left_eye, pvm.Circle))
        # color
        self.assertEqual(red_color, left_eye.fillColor.tolist())
        self.assertEqual(red_color, left_eye.lineColor.tolist())

        #third object is the right eye
        right_eye = drawing_list[3]
        self.assertTrue(isinstance(right_eye, pvm.Circle))
        # color
        self.assertEqual(yellow_color, right_eye.fillColor.tolist())
        self.assertEqual(yellow_color, right_eye.lineColor.tolist())
    def testOneEyeIsFar(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        tobii_helper.gazeData['left_gaze_origin_in_trackbox_coordinate_system'] = (0.34, 0.56, 0.97)
        tobii_helper.gazeData['right_gaze_origin_in_trackbox_coordinate_system'] = (0.32, 0.61, 1.00)
        tobii_helper.gazeData['left_gaze_origin_in_user_coordinate_system'] = (102.0, 135.52, 798.8)
        tobii_helper.gazeData['right_gaze_origin_in_user_coordinate_system'] = (96.0, 147.62, 812.5)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c', 'c'])
        tobii_helper.runTrackBox()
        drawing_list = visual_mock.getListOfDrawings()

        self.assertEqual(5, len(drawing_list))

        # left eye
        left_eye = drawing_list[2]
        self.assertTrue(isinstance(left_eye, pvm.Circle))
        # pos
        self.assertAlmostEqual(81.959, left_eye.pos[0], delta = 0.001)
        self.assertAlmostEqual(-24.792, left_eye.pos[1], delta = 0.001)
        # color
        self.assertEqual(red_color, left_eye.fillColor.tolist())
        self.assertEqual(red_color, left_eye.lineColor.tolist())

        # right eye
        right_eye = drawing_list[3]
        self.assertTrue(isinstance(right_eye, pvm.Circle))
        # pos
        self.assertAlmostEqual(92.204, right_eye.pos[0], delta = 0.001)
        self.assertAlmostEqual(-45.453, right_eye.pos[1], delta = 0.001)
        # color
        self.assertEqual(red_color, right_eye.fillColor.tolist())
        self.assertEqual(red_color, right_eye.lineColor.tolist())
    def testNotInitedThings(self):
        tobii_helper = calibrator.TobiiHelper()
        tobii_helper.disableLogging()

        # no monitor
        with self.assertRaises(RuntimeError):
            tobii_helper.runValidation()

        tobii_helper.setMonitor()

        # no eye tracker
        with self.assertRaises(RuntimeError):
            tobii_helper.runValidation()

        tobii_helper.eyetracker = "dummy"

        # no tracking
        with self.assertRaises(RuntimeError):
            tobii_helper.runValidation()

        tobii_helper.tracking = True

        # no gaze data
        with self.assertRaises(RuntimeError):
            tobii_helper.runValidation()

        tobii_helper.gazeData = {}
        tobii_helper.gazeData['left_gaze_point_on_display_area'] = (0.34, 0.56)
        tobii_helper.gazeData['right_gaze_point_on_display_area'] = (0.32, 0.6)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c'])
        tobii_helper.runValidation()
    def testDefaultFiveCalibPoints(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)
        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c'])
        tobii_helper.runValidation()
        drawing_list = visual_mock.getListOfDrawings()

        self.assertEqual(7, len(drawing_list))

        # first object is the gaze point
        eye_circle = drawing_list[0]
        self.assertTrue(isinstance(eye_circle, pvm.Circle))
        # size
        self.assertAlmostEqual(50, eye_circle.radius, delta = 0.001)
        # pos
        self.assertAlmostEqual(-232.0, eye_circle.pos[0], delta = 0.001)
        self.assertAlmostEqual(-65.0, eye_circle.pos[1], delta = 0.001)
        # color
        self.assertEqual([1.0, 1.0, 0.55], eye_circle.fillColor.tolist())
        self.assertEqual([1.0, 0.95, 0.0], eye_circle.lineColor.tolist())

        # the next five objects are the calibration points
        for i in range(1,6):
            calib_point = drawing_list[i]
            self.assertTrue(isinstance(calib_point, pvm.Circle))
            # size
            self.assertAlmostEqual(15, calib_point.radius, delta = 0.001)
             # pos
            if i == 1:
                self.assertAlmostEqual(-546.00, calib_point.pos[0], delta = 0.001)
                self.assertAlmostEqual(307.00, calib_point.pos[1], delta = 0.001)
            elif i == 2:
                self.assertAlmostEqual(546.00, calib_point.pos[0], delta = 0.001)
                self.assertAlmostEqual(307.00, calib_point.pos[1], delta = 0.001)
            elif i == 3:
                self.assertAlmostEqual(0.00, calib_point.pos[0], delta = 0.001)
                self.assertAlmostEqual(0.00, calib_point.pos[1], delta = 0.001)
            elif i == 4:
                self.assertAlmostEqual(-546.00, calib_point.pos[0], delta = 0.001)
                self.assertAlmostEqual(-307.00, calib_point.pos[1], delta = 0.001)
            elif i == 5:
                self.assertAlmostEqual(546.00, calib_point.pos[0], delta = 0.001)
                self.assertAlmostEqual(-307.00, calib_point.pos[1], delta = 0.001)
            # color
            self.assertEqual([1.0, -1.0, -1.0], calib_point.fillColor.tolist())
            self.assertEqual([1.0, -1.0, -1.0], calib_point.lineColor.tolist())

        # last object is the text
        feedback_text = drawing_list[6]
        self.assertTrue(isinstance(feedback_text, pvm.TextStim))
        # size
        self.assertAlmostEqual(0.07, feedback_text.height, delta = 0.001)
        # pos
        self.assertAlmostEqual(0.0, feedback_text.pos[0], delta = 0.001)
        self.assertAlmostEqual(-0.5, feedback_text.pos[1], delta = 0.001)
        # color
        self.assertEqual([1.0, 1.0, 1.0], feedback_text.color.tolist())
        # text
        self.assertEqual(str("Wait for the experimenter.") , feedback_text.text)
示例#14
0
    def testDefaultCalibPoints(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c'])
        tobii_helper.runFullCalibration()
        drawing_list = visual_mock.getListOfDrawings()

        self.assertEqual(1, len(drawing_list))
        message = drawing_list[0]
        self.assertTrue(isinstance(message, pvm.TextStim))
        self.assertEqual(str("Finished validating the calibration.\n\n" +\
                             "Calibration is complete. Closing window."), message.text)

        # default is five calib points
        self.assertEqual(5, len(self.calibDict))
        self.assertTrue('1' in self.calibDict)
        self.assertTrue('2' in self.calibDict)
        self.assertTrue('3' in self.calibDict)
        self.assertTrue('4' in self.calibDict)
        self.assertTrue('5' in self.calibDict)
        self.assertEqual((0.1, 0.1), self.calibDict['1'])
        self.assertEqual((0.9, 0.1), self.calibDict['2'])
        self.assertEqual((0.5, 0.5), self.calibDict['3'])
        self.assertEqual((0.1, 0.9), self.calibDict['4'])
        self.assertEqual((0.9, 0.9), self.calibDict['5'])
示例#15
0
    def testFrameRate(self):
        screen = pyglet.window.get_platform().get_default_display().get_default_screen()
        my_monitor = monitors.Monitor('myMon')
        my_monitor.setSizePix([screen.width, screen.height])
        my_monitor.setWidth(30)
        my_monitor.saveMon()
        experiment = asrt.Experiment("")

        with visual.Window(size=(screen.width, screen.height), color='white', monitor=my_monitor, fullscr=False,
                           units="cm", gammaRamp=256, gammaErrorPolicy='ignore') as experiment.mywindow:
            experiment.mywindow.getMsPerFrame = lambda nFrames: (16.67, 1.0)
            experiment.mywindow.getActualFrameRate = lambda: 60.0

            visual_mock = pvm.PsychoPyVisualMock()
            experiment.frame_check()

            self.assertAlmostEqual(experiment.frame_rate, 60.0, delta=0.0001)
            self.assertAlmostEqual(experiment.frame_sd, 1.0, delta=0.0001)
            self.assertAlmostEqual(experiment.frame_time, 16.67, delta=0.0001)

            drawing_list = visual_mock.getListOfDrawings()
            self.assertEqual(len(drawing_list), 1)

            self.assertEqual(
                drawing_list[0].text, "Adatok előkészítése folyamatban.\n\nEz eltarthat pár másodpercig.\n\nAddig semmit sem fogsz látni a képernyőn...")
示例#16
0
    def testDeviceFoundAfterSomeTry(self):
        experiment = asrt.Experiment("")
        self.assertTrue(experiment.eye_tracker is None)

        self.original_find_all_eyetrackers = tobii.find_all_eyetrackers

        global try_counter_g
        try_counter_g = 0

        def find_all_eyetrackers_mock():
            global try_counter_g
            try_counter_g += 1
            if try_counter_g < 100:
                return []
            else:
                return ["I'm an eye-tracker"]

        tobii.find_all_eyetrackers = find_all_eyetrackers_mock

        visual_mock = pvm.PsychoPyVisualMock()
        self.initWindow()
        experiment.mywindow = self.mywindow

        experiment.init_eyetracker()

        self.assertTrue(experiment.eye_tracker == "I'm an eye-tracker")
        drawing_list = visual_mock.getListOfDrawings()
        self.assertEqual(len(drawing_list), 1)

        self.assertEqual(drawing_list[0].text,
                         "Eye-tracker eszköz keresése...")

        tobii.find_all_eyetrackers = self.original_find_all_eyetrackers
示例#17
0
    def testOneCalibPoint(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        self.pointList = [(0.9, 0.9)]

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['x'])
        tobii_helper._TobiiHelper__getCalibrationData(self.calibWin,
                                                      self.pointList)
        drawing_list = visual_mock.getListOfDrawings()

        self.assertEqual(150, len(drawing_list))

        # first 50 frames are about moving the circle to the next calib point
        for i in range(0, 50):
            calibPoint = drawing_list[i]
            self.assertTrue(isinstance(calibPoint, pvm.Circle))
            # size
            self.assertEqual(50, calibPoint.radius)
            # pos
            self.assertAlmostEqual(-524 + i * 22,
                                   calibPoint.pos[0],
                                   delta=10.0)
            self.assertAlmostEqual(295 - i * 12.5,
                                   calibPoint.pos[1],
                                   delta=13.0)
            # color
            self.assertEqual([1.0, -1.0, -1.0], calibPoint.fillColor.tolist())
            self.assertEqual([1.0, -1.0, -1.0], calibPoint.lineColor.tolist())

        # after the moving, circle is at the first calib point
        self.assertEqual(546, drawing_list[49].pos[0])
        self.assertEqual(-307, drawing_list[49].pos[1])
    def testDifferentBackDistance(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)
        tobii_helper.tbCoordinates['frontDistance'] = 300.0
        tobii_helper.tbCoordinates['backDistance'] = 500.0

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c', 'c'])
        tobii_helper.runTrackBox()
        drawing_list = visual_mock.getListOfDrawings()

        self.assertEqual(5, len(drawing_list))

        # left eye
        left_eye = drawing_list[2]
        self.assertTrue(isinstance(left_eye, pvm.Circle))
        # pos
        self.assertAlmostEqual(81.959, left_eye.pos[0], delta = 0.001)
        self.assertAlmostEqual(-24.792, left_eye.pos[1], delta = 0.001)
        # color
        self.assertEqual(red_color, left_eye.fillColor.tolist())
        self.assertEqual(red_color, left_eye.lineColor.tolist())

        # right eye
        right_eye = drawing_list[3]
        self.assertTrue(isinstance(right_eye, pvm.Circle))
        # pos
        self.assertAlmostEqual(92.204, right_eye.pos[0], delta = 0.001)
        self.assertAlmostEqual(-45.453, right_eye.pos[1], delta = 0.001)
        # color
        self.assertEqual(red_color, right_eye.fillColor.tolist())
        self.assertEqual(red_color, right_eye.lineColor.tolist())
    def testQuitByQ(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['q'])
        with self.assertRaises(SystemExit):
            tobii_helper.runValidation()
    def testWrongWindowParam(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c', 'c'])

        with self.assertRaises(TypeError):
            tobii_helper.runTrackBox(trackWin = [])
示例#21
0
    def testWithoutPrepTrials(self):
        gui_mock = pgm.PsychoPyGuiMock()
        gui_mock.addFieldValues(['Tóth Béla', 10, 'férfi', 25, '3rd'])

        self.visual_mock = pvm.PsychoPyVisualMock()

        self.experiment.run(window_gammaErrorPolicy='ignore')

        self.checkOutputFile()
    def testEyePosInTrackbox(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)
        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c', 'c'])
        tobii_helper.runTrackBox()
        drawing_list = visual_mock.getListOfDrawings()

        self.assertEqual(5, len(drawing_list))

        # second object is the background of the virtual trackbox
        background_rect = drawing_list[1]
        self.assertTrue(isinstance(background_rect, pvm.Rect))
        # size
        self.assertAlmostEqual(512.25, background_rect.width, delta = 0.001)
        self.assertAlmostEqual(413.215, background_rect.height, delta = 0.001)
        # pos
        self.assertAlmostEqual(0.0, background_rect.pos[0], delta = 0.001)
        self.assertAlmostEqual(0.0, background_rect.pos[1], delta = 0.001)

        # third object is the left eye
        left_eye = drawing_list[2]
        self.assertTrue(isinstance(left_eye, pvm.Circle))
        # size
        self.assertAlmostEqual(30, left_eye.radius, delta = 0.001)
        # pos
        self.assertAlmostEqual(81.959, left_eye.pos[0], delta = 0.001)
        self.assertAlmostEqual(-24.792, left_eye.pos[1], delta = 0.001)
        # color
        self.assertEqual(green_color, left_eye.fillColor.tolist())
        self.assertEqual(green_color, left_eye.lineColor.tolist())

        # forth object is the right eye
        right_eye = drawing_list[3]
        self.assertTrue(isinstance(right_eye, pvm.Circle))
        # size
        self.assertAlmostEqual(30, right_eye.radius, delta = 0.001)
        # pos
        self.assertAlmostEqual(92.204, right_eye.pos[0], delta = 0.001)
        self.assertAlmostEqual(-45.453, right_eye.pos[1], delta = 0.001)
        # color
        self.assertEqual(green_color, right_eye.fillColor.tolist())
        self.assertEqual(green_color, right_eye.lineColor.tolist())

        # fifth object is the text about the distance
        feedback_text = drawing_list[4]
        self.assertTrue(isinstance(feedback_text, pvm.TextStim))
        # size
        self.assertAlmostEqual(0.07, feedback_text.height, delta = 0.001)
        # pos
        self.assertAlmostEqual(0.0, feedback_text.pos[0], delta = 0.001)
        self.assertAlmostEqual(-0.638, feedback_text.pos[1], delta = 0.001)
        # color
        self.assertEqual([1.0, 1.0, 1.0], feedback_text.color.tolist())
        # text
        self.assertEqual(str("Press 'c' to calibrate or 'q' to abort.") , feedback_text.text)
示例#23
0
    def testNoReturnedValues(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['c'])

        result = tobii_helper._TobiiHelper__drawCalibrationResults(
            self.calibResult, self.calibWin, self.calibDict)
        self.assertEqual(0, len(result))
示例#24
0
    def testNoReturnedValues(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['x'])

        result = tobii_helper._TobiiHelper__getCalibrationData(
            self.calibWin, self.pointList)
        self.assertEqual(0, len(result))
示例#25
0
    def testSimpleTestCase(self):
        # for setting participant data
        gui_mock = pgm.PsychoPyGuiMock()
        gui_mock.addFieldValues(['Tóth Béla', 10, 'férfi', 25, '3rd'])

        self.visual_mock = pvm.PsychoPyVisualMock()

        self.experiment.run(window_gammaErrorPolicy='ignore')

        self.checkOutputFile(True)
示例#26
0
    def testQuitByQ(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['q'])

        with self.assertRaises(SystemExit):
            tobii_helper._TobiiHelper__getCalibrationData(
                self.calibWin, self.pointList)
示例#27
0
    def testQuitByQ(self):
        tobii_helper = calibrator.TobiiHelper()
        self.initAll(tobii_helper)

        visual_mock = pvm.PsychoPyVisualMock()
        visual_mock.setReturnKeyList(['q'])

        with self.assertRaises(SystemExit):
            tobii_helper._TobiiHelper__drawCalibrationResults(
                self.calibResult, self.calibWin, self.calibDict)
    def testNotInitedThings(self):
        tobii_helper = calibrator.TobiiHelper()
        tobii_helper.disableLogging()

        tobii_helper._TobiiHelper__startGazeData = DummyFunction
        tobii_helper._TobiiHelper__stopGazeData = DummyFunction

        # no window
        with self.assertRaises(TypeError):
            tobii_helper._TobiiHelper__drawEyePositions([])

        # ok init the window
        with visual.Window(size = [1366, 768],
                                 pos = [0, 0],
                                 units = 'pix',
                                 fullscr = True,
                                 allowGUI = True,
                                 monitor = tobii_helper.win,
                                 winType = 'pyglet',
                                 color = [0.4, 0.4, 0.4]) as trackWin:

            # now we don't have tracker box coordinates
            with self.assertRaises(RuntimeError):
                tobii_helper._TobiiHelper__drawEyePositions(trackWin)

            self.initTrackBox(tobii_helper)

            # no eyetracker
            with self.assertRaises(RuntimeError):
                tobii_helper._TobiiHelper__drawEyePositions(trackWin)

            tobii_helper.eyetracker = "dummy"

            # no tracking
            with self.assertRaises(RuntimeError):
                tobii_helper._TobiiHelper__drawEyePositions(trackWin)

            tobii_helper.tracking = True

            # no gaze data
            with self.assertRaises(RuntimeError):
                tobii_helper._TobiiHelper__drawEyePositions(trackWin)

            tobii_helper.gazeData = {}
            tobii_helper.gazeData['left_gaze_origin_in_trackbox_coordinate_system'] = (0.34, 0.56, 0.81)
            tobii_helper.gazeData['right_gaze_origin_in_trackbox_coordinate_system'] = (0.32, 0.61, 0.815)
            tobii_helper.gazeData['left_gaze_origin_in_user_coordinate_system'] = (102.0, 135.52, 650.0)
            tobii_helper.gazeData['right_gaze_origin_in_user_coordinate_system'] = (96.0, 147.62, 652.0)
            tobii_helper.gazeData['left_gaze_origin_validity'] = True
            tobii_helper.gazeData['right_gaze_origin_validity'] = True

            visual_mock = pvm.PsychoPyVisualMock()
            visual_mock.setReturnKeyList(['c', 'c'])
            tobii_helper._TobiiHelper__drawEyePositions(trackWin)
            trackWin.close()
示例#29
0
    def testGazeDataAveraging(self):
        gui_mock = pgm.PsychoPyGuiMock()
        gui_mock.addFieldValues(['Tóth Béla', 10, 'férfi', 25, '3rd'])

        self.experiment.wait_for_eye_response = self.wait_for_eye_response_override_averaging_data

        self.visual_mock = pvm.PsychoPyVisualMock()

        self.experiment.run(window_gammaErrorPolicy='ignore')

        self.checkOutputFile(True)
示例#30
0
    def testRSIInterval(self):
        # reset StaticPeriod
        core.StaticPeriod = self.StaticPeriod
        gui_mock = pgm.PsychoPyGuiMock()
        gui_mock.addFieldValues(['Tóth Béla', 10, 'férfi', 25, '3rd'])

        self.visual_mock = pvm.PsychoPyVisualMock()

        self.experiment.run(window_gammaErrorPolicy='ignore')

        self.checkOutputFile()