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")
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)
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'])
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...")
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
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 = [])
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)
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))
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))
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)
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)
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()
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)
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()