Exemplo n.º 1
0
    def test_key_presses(self):
        # simulated keys are not being picked up in draw:

        r = copy.copy(self.r)
        r.markerPlaced = True

        r.mouseOnly = False
        event._onPygletKey(symbol='tab', modifiers=None, emulated=True)
        r.draw()

        r.respKeys = ['s']
        r.enableRespKeys = True
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()

        # test move left, move right:
        r = RatingScale(self.win, markerStart=3, autoLog=False)
        assert r.markerPlacedAt == 2
        event._onPygletKey(symbol='left', modifiers=None, emulated=True)
        r.draw()
        assert r.markerPlaced  # and r.markerPlacedBySubject
        #assert r.markerPlacedAt == 1
        event._onPygletKey(symbol='right', modifiers=None, emulated=True)
        r.draw()
        #assert r.markerPlacedAt == 2

        r.acceptKeys = ['s']
        r.beyondMinTime = True
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
Exemplo n.º 2
0
    def test_invalid_modifiers(self):
        """Modifiers must be integers."""
        key = 'a'
        modifiers = None

        with pytest.raises(ValueError):
            event._onPygletKey(key, modifiers, emulated=True)
Exemplo n.º 3
0
 def run(self):
     self.running = True
     if self.skip:
         for i in range(int(self.skip)):
             if self.playSound:  # pragma: no cover
                 self.sound1.play()
                 self.sound2.play()
             # emulate T1 stabilization without data collection
             core.wait(self.TR, hogCPUperiod=0)
     self.clock.reset()
     for vol in range(1, self.volumes + 1):
         if self.playSound:  # pragma: no cover
             self.sound1.play()
             self.sound2.play()
         if self.stopflag:
             break
         # "emit" a sync pulse by placing a key in the buffer:
         event._onPygletKey(symbol=self.sync, modifiers=0, emulated=True)
         # wait for start of next volume, doing our own hogCPU for
         # tighter sync:
         core.wait(self.timesleep - self.hogCPU, hogCPUperiod=0)
         while self.clock.getTime() < vol * self.TR:
             pass  # hogs the CPU for tighter sync
     self.running = False
     return self
Exemplo n.º 4
0
    def test_invalid_modifiers(self):
        """Modifiers must be integers."""
        key = 'a'
        modifiers = None

        with pytest.raises(ValueError):
            event._onPygletKey(key, modifiers, emulated=True)
Exemplo n.º 5
0
def _onPygletKeyPress(symbol, modifier):
    if modifier:
        event._onPygletKey(symbol, modifier)
    global _keyPressBuffer
    keyTime = core.getTime()
    key = pyglet.window.key.symbol_string(symbol).lower().lstrip("_").lstrip("NUM_")
    _keyPressBuffer.append((key, keyTime))
Exemplo n.º 6
0
 def run(self):
     self.running = True
     if self.skip:
         for i in range(int(self.skip)):
             if self.playSound:  # pragma: no cover
                 self.sound1.play()
                 self.sound2.play()
             # emulate T1 stabilization without data collection
             core.wait(self.TR, hogCPUperiod=0)
     self.clock.reset()
     for vol in range(1, self.volumes + 1):
         if self.playSound:  # pragma: no cover
             self.sound1.play()
             self.sound2.play()
         if self.stopflag:
             break
         # "emit" a sync pulse by placing a key in the buffer:
         event._onPygletKey(symbol=self.sync, modifiers=0,
                            emulated=True)
         # wait for start of next volume, doing our own hogCPU for
         # tighter sync:
         core.wait(self.timesleep - self.hogCPU, hogCPUperiod=0)
         while self.clock.getTime() < vol * self.TR:
             pass  # hogs the CPU for tighter sync
     self.running = False
     return self
Exemplo n.º 7
0
    def test_key_presses(self):
        # simulated keys are not being picked up in draw:

        r = copy.copy(self.r)
        r.markerPlaced = True

        r.mouseOnly = False
        event._onPygletKey(symbol='tab', modifiers=None, emulated=True)
        r.draw()

        r.respKeys = ['s']
        r.enableRespKeys = True
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()

        # test move left, move right:
        r = RatingScale(self.win, markerStart=3, autoLog=False)
        assert r.markerPlacedAt == 2
        event._onPygletKey(symbol='left', modifiers=None, emulated=True)
        r.draw()
        assert r.markerPlaced  # and r.markerPlacedBySubject
        #assert r.markerPlacedAt == 1
        event._onPygletKey(symbol='right', modifiers=None, emulated=True)
        r.draw()
        #assert r.markerPlacedAt == 2

        r.acceptKeys = ['s']
        r.beyondMinTime = True
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
Exemplo n.º 8
0
 def onKey(self, evt, modifiers):
     """Check for tab key then pass all events to event package."""
     if evt is not None:
         thisKey = pyglet.window.key.symbol_string(evt).lower()
         if thisKey == 'tab':
             self.onText('\t')
         event._onPygletKey(evt, modifiers)
Exemplo n.º 9
0
 def getEvents(self, returnRaw=False, asKeys=False):
     """Returns a list of unique events (one event per button pressed)
     and also stores a copy of the full list of events since last getEvents() 
     (stored as ForpBox.rawEvts)
     
     `returnRaw` :
         return (not just store) the full event list
         
     `asKeys` :
         If True, will also emulate pyglet keyboard events, so that button 1 will
         register as a keyboard event with value "1", and as such will be detectable
         using `event.getKeys()`
     """
     nToGet = self.port.inWaiting()
     evtStr = self.port.read(nToGet)
     self.rawEvts=[]
     #for each character convert to an ordinal int value (numpy the ascii chr)
     for thisChr in evtStr:
         self.rawEvts.append(ord(thisChr))
         if asKeys:
             event._onPygletKey(symbol=ord(thisChr), modifiers=None)
             # better as: emulated='fORP_bbox_asKey', but need to adjust event._onPygletKey
             # and the symbol conversion pyglet.window.key.symbol_string(symbol).lower()
     #return the abbreviated list if necess
     if returnRaw: 
         return self.rawEvts
     else:
         return self.getUniqueEvents()
Exemplo n.º 10
0
def handleKeys(key):
    '''Function for handling keys from the handles and using with
    ratingScale...'''
    if key != 191:
        key = str(key)
        event._onPygletKey(symbol=key, modifiers=None, emulated=True)#Buffers the input
        last_state = True # Return true if down
        port.setData(0)
        core.wait(.15)
Exemplo n.º 11
0
 def test_modifiers_and_timestamp(self):
     """Test that both key modifiers and timestamp are returned"""
     event._onPygletKey('a', MOD_ALT, emulated=True)
     keys = event.getKeys(modifiers=True, timeStamped=True)
     assert len(keys) == 1
     assert len(keys[0]) == 3
     assert keys[0][0] == 'a'
     assert keys[0][1]['alt']
     assert isinstance(keys[0][2], float)
Exemplo n.º 12
0
 def test_timestamp(self):
     """Test that a keypress timestamp is correctly returned"""
     event._onPygletKey('a', 0, emulated=True)
     keys = event.getKeys(timeStamped=True)
     assert len(keys) == 1
     assert len(keys[0]) == 2
     assert keys[0][0] == 'a'
     assert isinstance(keys[0][1], float)
     assert keys[0][1] > 0.0
Exemplo n.º 13
0
 def test_timestamp(self):
     """Test that a keypress timestamp is correctly returned"""
     event._onPygletKey('a', 0, emulated=True)
     keys = event.getKeys(timeStamped=True)
     assert len(keys) == 1
     assert len(keys[0]) == 2
     assert keys[0][0] == 'a'
     assert isinstance(keys[0][1], float)
     assert keys[0][1] > 0.0
Exemplo n.º 14
0
 def test_modifiers_and_timestamp(self):
     """Test that both key modifiers and timestamp are returned"""
     event._onPygletKey('a', MOD_ALT, emulated=True)
     keys = event.getKeys(modifiers=True, timeStamped=True)
     assert len(keys) == 1
     assert len(keys[0]) == 3
     assert keys[0][0] == 'a'
     assert keys[0][1]['alt']
     assert isinstance(keys[0][2], float)
Exemplo n.º 15
0
 def test_modifiers(self):
     """Test that key modifier flags are correctly returned"""
     event._onPygletKey('a', MOD_CTRL | MOD_SHIFT, emulated=True)
     keys = event.getKeys(modifiers=True)
     assert len(keys) == 1
     assert len(keys[0]) == 2
     assert keys[0][0] == 'a'
     assert keys[0][1]['ctrl']
     assert keys[0][1]['shift']
     assert not keys[0][1]['alt']
Exemplo n.º 16
0
def handleKeys(key):
    '''Function for handling keys from the handles and using with
    ratingScale...'''
    if key != 191:
        key = str(key)
        event._onPygletKey(symbol=key, modifiers=None,
                           emulated=True)  #Buffers the input
        last_state = True  # Return true if down
        port.setData(0)
        core.wait(.15)
Exemplo n.º 17
0
 def test_modifiers(self):
     """Test that key modifier flags are correctly returned"""
     event._onPygletKey('a', MOD_CTRL|MOD_SHIFT, emulated=True)
     keys = event.getKeys(modifiers=True)
     assert len(keys) == 1
     assert len(keys[0]) == 2
     assert keys[0][0] == 'a'
     assert keys[0][1]['ctrl']
     assert keys[0][1]['shift']
     assert not keys[0][1]['alt']
Exemplo n.º 18
0
 def test_german_characters(self):
     """Test that event can handle German characters"""
     # 824633720832 = ö as pyglet symbol string
     # need to use emulated = False to execute the lines that actually
     # fix the German characters handling
     event._onPygletKey(824633720832, 0, emulated=False)
     event._onPygletText('ö', emulated=True)
     keys = event.getKeys(modifiers=False, timeStamped=True)
     assert len(keys) == 1
     assert len(keys[0]) == 2
     assert keys[0][0] == 'ö'
     assert isinstance(keys[0][1], float)
Exemplo n.º 19
0
    def test_draw_conditionals(self):
        r = copy.copy(self.r)

        r.allowTimeOut = True
        r.timedOut = False
        r.maxTime = -1
        r.noResponse = False
        r.disappear = True
        r.draw()

        # miss lines: if self.myMouse.getPressed()[0]:

        r = copy.copy(self.r)
        r.beyondMinTime = True
        r.showAccept = True
        r.noResponse = False
        r.decisionTime = 0
        r.draw()

        r = RatingScale(self.win,
                        singleClick=True,
                        markerStart=1,
                        marker='glow',
                        markerExpansion=-10,
                        autoLog=False)
        r.draw()

        r = RatingScale(self.win,
                        singleClick=True,
                        markerStart=-1,
                        autoLog=False)
        r.draw()

        r = RatingScale(self.win,
                        showAccept=True,
                        choices=['a', 'b'],
                        autoLog=False)
        r.showValue = True
        r.markerPlacedAt = 1
        r.markerPlaced = True
        r.draw()
        r.showvalue = False
        r.draw()

        r = RatingScale(self.win, labels=['a', 'b', 'c'], autoLog=False)
        r = RatingScale(self.win,
                        tickMarks=[1, 2, 3],
                        labels=None,
                        autoLog=False)
        r = RatingScale(self.win, leftKeys=['s'], autoLog=False)
        r.markerPlaced = False
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
Exemplo n.º 20
0
 def test_german_characters(self):
     """Test that event can handle German characters"""
     # 824633720832 = ö as pyglet symbol string
     # need to use emulated = False to execute the lines that actually
     # fix the German characters handling
     event._onPygletKey(824633720832, 0, emulated=False)
     event._onPygletText('ö', emulated=True)
     keys = event.getKeys(modifiers=False, timeStamped=True)
     assert len(keys) == 1
     assert len(keys[0]) == 2
     assert keys[0][0] == 'ö'
     assert isinstance(keys[0][1], float)
Exemplo n.º 21
0
 def test_german_characters_with_modifiers(self):
     """Test that event can handle German characters with modifiers"""
     # 824633720832 = ö as pyglet symbol string
     # need to use emulated = False to execute the lines that actually
     # fix the German characters handling
     event._onPygletKey(824633720832, MOD_SHIFT | MOD_SCROLLLOCK, emulated=False)
     event._onPygletText('ö', emulated=True)
     keys = event.getKeys(modifiers=True, timeStamped=True)
     assert len(keys) == 1
     assert len(keys[0]) == 3
     assert keys[0][0] == 'ö'
     assert keys[0][1]['shift']
     assert keys[0][1]['scrolllock']
     assert isinstance(keys[0][2], float)
Exemplo n.º 22
0
 def test_german_characters_with_modifiers(self):
     """Test that event can handle German characters with modifiers"""
     # 824633720832 = ö as pyglet symbol string
     # need to use emulated = False to execute the lines that actually
     # fix the German characters handling
     event._onPygletKey(824633720832,
                        MOD_SHIFT | MOD_SCROLLLOCK,
                        emulated=False)
     event._onPygletText('ö', emulated=True)
     keys = event.getKeys(modifiers=True, timeStamped=True)
     assert len(keys) == 1
     assert len(keys[0]) == 3
     assert keys[0][0] == 'ö'
     assert keys[0][1]['shift']
     assert keys[0][1]['scrolllock']
     assert isinstance(keys[0][2], float)
Exemplo n.º 23
0
    def getEvents(self, returnRaw=False, asKeys=False, allowRepeats=False):
        """Returns a list of unique events (one event per button pressed)
        and also stores a copy of the full list of events since last
        getEvents() (stored as ForpBox.rawEvts)

        `returnRaw` :
            return (not just store) the full event list

        `asKeys` :
            If True, will also emulate pyglet keyboard events, so that
            button 1 will register as a keyboard event with value "1",
            and as such will be detectable using `event.getKeys()`

        `allowRepeats` :
            If True, this will return pressed buttons even if they were held
            down between calls to getEvents(). If the fORP is on the "Eprime"
            setting, you will get a stream of button presses while a button is
            held down. On the "Bitwise" setting, you will get a set of all
            currently pressed buttons every time a button is pressed or
            released.
            This option might be useful if you think your participant may be
            holding the button down before you start checking for presses.
        """
        nToGet = self.port.inWaiting()
        evtStr = self.port.read(nToGet)
        self.rawEvts = []
        self.pressEvents = []
        if allowRepeats:
            self.clearStatus()
        # for each character convert to an ordinal int value (numpy the ascii
        # chr)
        for thisChr in evtStr:
            pressCode = ord(thisChr)
            self.rawEvts.append(pressCode)
            decodedEvents = self._generateEvents(pressCode)
            self.pressEvents += decodedEvents
            if asKeys:
                for code in decodedEvents:
                    event._onPygletKey(symbol=code, modifiers=0)
                    # better as: emulated='fORP_bbox_asKey', but need to
                    # adjust event._onPygletKey and the symbol conversion
                    # pyglet.window.key.symbol_string(symbol).lower()
        # return the abbreviated list if necessary
        if returnRaw:
            return self.rawEvts
        else:
            return self.getUniqueEvents()
Exemplo n.º 24
0
    def getEvents(self, returnRaw=False, asKeys=False, allowRepeats=False):
        """Returns a list of unique events (one event per button pressed)
        and also stores a copy of the full list of events since last
        getEvents() (stored as ForpBox.rawEvts)

        `returnRaw` :
            return (not just store) the full event list

        `asKeys` :
            If True, will also emulate pyglet keyboard events, so that
            button 1 will register as a keyboard event with value "1",
            and as such will be detectable using `event.getKeys()`

        `allowRepeats` :
            If True, this will return pressed buttons even if they were held
            down between calls to getEvents(). If the fORP is on the "Eprime"
            setting, you will get a stream of button presses while a button is
            held down. On the "Bitwise" setting, you will get a set of all
            currently pressed buttons every time a button is pressed or
            released.
            This option might be useful if you think your participant may be
            holding the button down before you start checking for presses.
        """
        nToGet = self.port.inWaiting()
        evtStr = self.port.read(nToGet)
        self.rawEvts = []
        self.pressEvents = []
        if allowRepeats:
            self.clearStatus()
        # for each character convert to an ordinal int value (numpy the ascii
        # chr)
        for thisChr in evtStr:
            pressCode = ord(thisChr)
            self.rawEvts.append(pressCode)
            decodedEvents = self._generateEvents(pressCode)
            self.pressEvents += decodedEvents
            if asKeys:
                for code in decodedEvents:
                    event._onPygletKey(symbol=code, modifiers=None)
                    # better as: emulated='fORP_bbox_asKey', but need to
                    # adjust event._onPygletKey and the symbol conversion
                    # pyglet.window.key.symbol_string(symbol).lower()
        # return the abbreviated list if necessary
        if returnRaw:
            return self.rawEvts
        else:
            return self.getUniqueEvents()
Exemplo n.º 25
0
 def run(self):
     self.running = True
     self.clock.reset()
     last_onset = 0.000
     # wait until next event requested, and simulate a key press
     for onset, key in self.responses:
         core.wait(float(onset) - last_onset)
         if type(key) == int:
             #log.warning('ResponseEmulator: int converted to str')
             key = str(key)[0]  # avoid cryptic error if int
         if type(key) == str:
             event._onPygletKey(symbol=key, modifiers=None, emulated=True)
         else:
             logging.error('ResponseEmulator: only keyboard events are supported')
         last_onset = onset
         if self.stopflag: break
     self.running = False
Exemplo n.º 26
0
 def run(self):
     self.running = True
     self.clock.reset()
     last_onset = 0.000
     # wait until next event requested, and simulate a key press
     for onset, key in self.responses:
         core.wait(float(onset) - last_onset)
         if type(key) == int:
             #log.warning('ResponseEmulator: int converted to str')
             key = str(key)[0]  # avoid cryptic error if int
         if type(key) == str:
             event._onPygletKey(symbol=key, modifiers=None, emulated=True)
         else:
             logging.error('ResponseEmulator: only keyboard events are supported')
         last_onset = onset
         if self.stopflag: break
     self.running = False
Exemplo n.º 27
0
    def test_waitKeys_clearEvents_False(self):
        keys = ['x', 'y', 'z']
        [event._onPygletKey(symbol=key, modifiers=0, emulated=True)
         for key in keys]

        key_events = event.waitKeys(keyList=keys[1:], clearEvents=False)
        assert 'x' not in key_events
        assert 'y' in key_events
        assert 'z' in key_events
Exemplo n.º 28
0
    def test_somelines(self):
        r = copy.copy(self.r)
        r.skipKeys = []
        r.mouseOnly = False
        r.enableRespKeys = True
        r.respKeys = ['s']
        r.allKeys = ['s']
        r.tickFromKeyPress = {u's': 1}
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.singleClick = True
        r.beyondMinTime = True
        r.draw()

        r.leftKeys = ['s']
        r.draw()
        r.leftKeys = []
        r.rightKeys = ['s']
        r.draw()
        r.rightKeys = []
Exemplo n.º 29
0
    def test_somelines(self):
        r = copy.copy(self.r)
        r.skipKeys = []
        r.mouseOnly = False
        r.enableRespKeys = True
        r.respKeys = ['s']
        r.allKeys = ['s']
        r.tickFromKeyPress = {u's': 1}
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.singleClick = True
        r.beyondMinTime = True
        r.draw()

        r.leftKeys = ['s']
        r.draw()
        r.leftKeys = []
        r.rightKeys = ['s']
        r.draw()
        r.rightKeys = []
Exemplo n.º 30
0
 def run(self):
     self.running = True
     self.clock.reset()
     last_onset = 0.000
     # wait until next event requested, and simulate a key press
     for onset, key in self.responses:
         core.wait(float(onset) - last_onset)
         if type(key) == int:
             # avoid cryptic error if int
             key = "{}".format(key)[0]
         if type(key) == type(""):
             event._onPygletKey(symbol=key, modifiers=0, emulated=True)
         else:
             logging.error('ResponseEmulator: only keyboard events '
                           'are supported')
         last_onset = onset
         if self.stopflag:
             break
     self.running = False
     return self
Exemplo n.º 31
0
    def test_1019_1029(self):
        # 1019-1029
        r = RatingScale(self.win)
        r.skipKeys = []
        r.mouseOnly = False
        r.enableRespKeys = True
        r.respKeys = ['s']
        r.allKeys = ['s']
        r.tickFromKeyPress = {u's': 1}
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.singleClick = True
        r.beyondMinTime = True
        r.draw()

        r.leftKeys = ['s']
        r.draw()
        r.leftKeys = []
        r.rightKeys = ['s']
        r.draw()
        r.rightKeys = []
Exemplo n.º 32
0
 def run(self):
     self.running = True
     self.clock.reset()
     last_onset = 0.000
     # wait until next event requested, and simulate a key press
     for onset, key in self.responses:
         core.wait(float(onset) - last_onset)
         if type(key) == int:
             # avoid cryptic error if int
             key = "{}".format(key)[0]
         if type(key) == type(""):
             event._onPygletKey(symbol=key, modifiers=0, emulated=True)
         else:
             logging.error('ResponseEmulator: only keyboard events '
                           'are supported')
         last_onset = onset
         if self.stopflag:
             break
     self.running = False
     return self
Exemplo n.º 33
0
    def test_getRating_RT_history(self):
        # 1139-43
        r = copy.copy(self.r)
        r.status = FINISHED
        r.noResponse = True
        r.timedOut = True
        assert r.getRT() == r.maxTime
        r.timedOut = False
        assert r.getRT() is None
        r.noResponse = False
        assert r.getRT() == r.decisionTime

        r.reset()  # ---------------
        r.noResponse = True
        r.markerPlacedAt = 0
        r.status = FINISHED
        assert r.getRating() is None

        r.status = FINISHED + 1
        assert r.getRating() == 1

        r.precision = 1
        r.choices = ['a', 'b']
        assert r.getRating() == 'b'

        r = RatingScale(self.win, singleClick=True, autoLog=False)
        r.draw()
        core.wait(.001, 0)
        r.acceptKeys = r.allKeys = ['1']
        r.beyondMinTime = True
        event._onPygletKey(symbol='1', modifiers=0, emulated=True)
        r.draw()
        h = r.getHistory()
        assert h[0] == (None, 0)
        assert h[-1][0] == 1
        if _travisTesting:
            assert 0.001 < h[-1][1] < 0.05  # travis virtual machines not great
        else:
            assert 0.001 < h[-1][1] < 0.03
Exemplo n.º 34
0
    def test_draw_conditionals(self):
        r = copy.copy(self.r)

        r.allowTimeOut = True
        r.timedOut = False
        r.maxTime = -1
        r.noResponse = False
        r.disappear = True
        r.draw()

        # miss lines: if self.myMouse.getPressed()[0]:

        r = copy.copy(self.r)
        r.beyondMinTime = True
        r.showAccept = True
        r.noResponse = False
        r.decisionTime = 0
        r.draw()

        r = RatingScale(self.win, singleClick=True, markerStart=1, marker='glow', markerExpansion=-10, autoLog=False)
        r.draw()

        r = RatingScale(self.win, singleClick=True, markerStart=-1, autoLog=False)
        r.draw()

        r = RatingScale(self.win, showAccept=True, choices=['a', 'b'], autoLog=False)
        r.showValue = True
        r.markerPlacedAt = 1
        r.markerPlaced = True
        r.draw()
        r.showvalue = False
        r.draw()

        r = RatingScale(self.win, labels=['a', 'b', 'c'], autoLog=False)
        r = RatingScale(self.win, tickMarks=[1,2,3], labels=None, autoLog=False)
        r = RatingScale(self.win, leftKeys=['s'], autoLog=False)
        r.markerPlaced = False
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
Exemplo n.º 35
0
    def test_getRating_RT_history(self):
        # 1139-43
        r = copy.copy(self.r)
        r.status = FINISHED
        r.noResponse = True
        r.timedOut = True
        assert r.getRT() == r.maxTime
        r.timedOut = False
        assert r.getRT() is None
        r.noResponse = False
        assert r.getRT() == r.decisionTime

        r.reset()  # ---------------
        r.noResponse = True
        r.markerPlacedAt = 0
        r.status = FINISHED
        assert r.getRating() is None

        r.status = FINISHED + 1
        assert r.getRating() == 1

        r.precision = 1
        r.choices = ['a', 'b']
        assert r.getRating() == 'b'

        r = RatingScale(self.win, singleClick=True, autoLog=False)
        r.draw()
        core.wait(.001, 0)
        r.acceptKeys = r.allKeys = ['1']
        r.beyondMinTime = True
        event._onPygletKey(symbol='1', modifiers=0, emulated=True)
        r.draw()
        h = r.getHistory()
        assert h[0] == (None, 0)
        assert h[-1][0] == 1
        if _vmTesting:
            assert 0.001 < h[-1][1] < 0.05  # virtual machines not usually great
        else:
            assert 0.001 < h[-1][1] < 0.03
Exemplo n.º 36
0
    def test_draw_conditionals(self):
        r = RatingScale(self.win)

        # 934-40, 944-45 if self.allowTimeOut ....:
        r.allowTimeOut = True
        r.timedOut = False
        r.maxTime = -1
        r.noResponse = False
        r.disappear = True
        r.draw()

        # 1049-1061  if self.myMouse.getPressed()[0]:

        # 1066-1072  if not self.noResponse and self.decisionTime == 0:
        r = RatingScale(self.win)
        r.beyondMinTime = True
        r.showAccept = True
        r.noResponse = False
        r.decisionTime = 0
        r.draw()

        r = RatingScale(self.win, singleClick=True, markerStyle='glow', markerExpansion=-10)
        r.draw()
        #del r.markerPlacedAt  # 989
        #r.draw()

        # 1006
        r = RatingScale(self.win, showAccept=True, choices=['a', 'b'])
        r.showValue = True
        r.markerPlacedAt = 1
        r.markerPlaced = True
        r.draw()
        r.showvalue = False
        r.draw()

        r = RatingScale(self.win, leftKeys=['s'])
        r.markerPlaced = False
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
Exemplo n.º 37
0
    def test_keys(self):
        pytest.skip()  # failing on travis-ci
        if self.win.winType == 'pygame':
            pytest.skip()
        event.clearEvents()
        assert event.getKeys() == []
        for k in ['s', 'return']:
            event.clearEvents()
            event._onPygletKey(symbol=k, modifiers=None, emulated=True)
            assert k in event.getKeys()
            event._onPygletKey(symbol=17, modifiers=None, emulated=False)
            assert '17' in event.getKeys()

            event._onPygletKey(symbol=k, modifiers=None, emulated=True)
            assert k in event.getKeys(timeStamped=True)[0]
            event._onPygletKey(symbol=k, modifiers=None, emulated=True)
            event._onPygletKey(symbol='x', modifiers=None,
                               emulated=True)  # nontarget
            assert k in event.getKeys(keyList=[k, 'd'])

            # waitKeys implicitly clears events, so use a thread to add a delayed key press
            assert event.waitKeys(maxWait=-1) == None
            keyThread = DelayedFakeKey(k)
            keyThread.start()
            assert event.waitKeys(maxWait=.1) == [k]
            keyThread = DelayedFakeKey(k)
            keyThread.start()
            assert event.waitKeys(maxWait=.1, keyList=[k]) == [k]

            # test time-stamped waitKeys
            c = core.Clock()
            delay = 0.01
            keyThread = DelayedFakeKey(k, delay=delay)
            keyThread.start()
            result = event.waitKeys(maxWait=.1, keyList=[k], timeStamped=c)
            assert result[0][0] == k
            assert result[0][
                1] - delay < .001  # should be ~0 except for execution time
Exemplo n.º 38
0
    def test_key_presses(self):
        r = RatingScale(self.win)
        r.markerPlaced = True
        r.allKeys = ['s']
        r.markerPlacedAt = 2

        # 1014-1042
        r.mouseOnly = False
        r.skipKeys = ['s']
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
        r.skipKeys = []

        r.respKeys = ['s']
        r.enableRespKeys = True
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
        r.respKeys = []

        r = RatingScale(self.win)
        r.markerPlaced = True
        r.allKeys = ['s']
        r.markerPlacedAt = 2
        r.leftKeys = ['s']
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
        r.leftKeys = []

        r.rightKeys = ['s']
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
        r.rightKeys = []

        r.acceptKeys = ['s']
        r.beyondMinTime = True
        event._onPygletKey(symbol='s', modifiers=None, emulated=True)
        r.draw()
Exemplo n.º 39
0
    def test_keys(self):
        pytest.skip()  # failing on travis-ci
        if self.win.winType == 'pygame':
            pytest.skip()
        event.clearEvents()
        assert event.getKeys() == []
        for k in ['s', 'return']:
            event.clearEvents()
            event._onPygletKey(symbol=k, modifiers=None, emulated=True)
            assert k in event.getKeys()
            event._onPygletKey(symbol=17, modifiers=None, emulated=False)
            assert '17' in event.getKeys()

            event._onPygletKey(symbol=k, modifiers=None, emulated=True)
            assert k in event.getKeys(timeStamped=True)[0]
            event._onPygletKey(symbol=k, modifiers=None, emulated=True)
            event._onPygletKey(symbol='x', modifiers=None, emulated=True)  # nontarget
            assert k in event.getKeys(keyList=[k, 'd'])

            # waitKeys implicitly clears events, so use a thread to add a delayed key press
            assert event.waitKeys(maxWait=-1) == None
            keyThread = DelayedFakeKey(k)
            keyThread.start()
            assert event.waitKeys(maxWait=.1) == [k]
            keyThread = DelayedFakeKey(k)
            keyThread.start()
            assert event.waitKeys(maxWait=.1, keyList=[k]) == [k]

            # test time-stamped waitKeys
            c = core.Clock()
            delay=0.01
            keyThread = DelayedFakeKey(k, delay=delay)
            keyThread.start()
            result = event.waitKeys(maxWait=.1, keyList=[k], timeStamped=c)
            assert result[0][0] == k
            assert result[0][1] - delay < .001  # should be ~0 except for execution time
Exemplo n.º 40
0
    def test_getRating_RT_history(self):
        # 1139-43
        r = copy.copy(self.r)
        r.status = FINISHED
        r.noResponse = True
        r.timedOut = True
        assert r.getRT() == r.maxTime
        r.timedOut = False
        assert r.getRT() is None
        r.noResponse = False
        assert r.getRT() == r.decisionTime

        r.reset()  # ---------------
        r.noResponse = True
        r.markerPlacedAt = 0
        r.status = FINISHED
        assert r.getRating() is None

        r.status = FINISHED + 1
        assert r.getRating() == 1

        r.precision = 1
        r.choices = ["a", "b"]
        assert r.getRating() == "b"

        r = RatingScale(self.win, singleClick=True, autoLog=False)
        r.draw()
        core.wait(0.001, 0)
        r.acceptKeys = r.allKeys = ["1"]
        r.beyondMinTime = True
        event._onPygletKey(symbol="1", modifiers=None, emulated=True)
        r.draw()
        h = r.getHistory()
        assert h[0] == (None, 0)
        assert h[-1][0] == 1
        assert 0.001 < h[-1][1] < 0.03
Exemplo n.º 41
0
    def test_getRating_RT_history(self):
        # 1139-43
        r = RatingScale(self.win)
        r.status = FINISHED
        r.noResponse = True
        r.timedOut = True
        assert r.getRT() == r.maxTime
        r.timedOut = False
        assert r.getRT() == None
        r.noResponse = False
        assert r.getRT() == r.decisionTime

        r = RatingScale(self.win, precision=10)
        r.noResponse = True
        r.markerPlacedAt = 0
        r.status = FINISHED
        assert r.getRating() == False

        r.status = FINISHED + 1
        assert r.getRating() == 1

        r.precision = 1
        r.choices = ['a', 'b']
        assert r.getRating() == 'b'

        r = RatingScale(self.win, singleClick=True)
        r.draw()
        core.wait(.001, 0)
        r.acceptKeys = r.allKeys = ['1']
        r.beyondMinTime = True
        event._onPygletKey(symbol='1', modifiers=None, emulated=True)
        r.draw()
        h = r.getHistory()
        assert h[0] == (None, 0)
        assert h[-1][0] == 1
        assert 0.001 < h[-1][1] < 0.03
Exemplo n.º 42
0
Arquivo: net.py Projeto: napratin/nap
 def keyPress(cls, symbol, modifiers=None, emulated=True):
   event._onPygletKey(symbol=symbol, modifiers=modifiers, emulated=emulated)
Exemplo n.º 43
0
 def run(self):
     core.wait(self.delay)
     event._onPygletKey(symbol=self.key, modifiers=None, emulated=True)
Exemplo n.º 44
0
 def test_clearEvents_keyboard(self):
     event._onPygletKey(symbol='x', modifiers=0, emulated=True)
     event.clearEvents('keyboard')
     assert not event._keyBuffer
Exemplo n.º 45
0
 def test_clearEvents_joystick(self):
     """Keyboard buffer should not be affected.
     """
     event._onPygletKey(symbol='x', modifiers=0, emulated=True)
     event.clearEvents('joystick')
     assert event._keyBuffer
Exemplo n.º 46
0
 def test_keyname(self):
     """Test that a key name is correctly returned."""
     event._onPygletKey('a', 0, emulated=True)
     keys = event.getKeys()
     assert len(keys) == 1
     assert keys[0] == 'a'
Exemplo n.º 47
0
 def test_keyname(self):
     """Test that a key name is correctly returned."""
     event._onPygletKey('a', 0, emulated=True)
     keys = event.getKeys()
     assert len(keys) == 1
     assert keys[0] == 'a'
Exemplo n.º 48
0
 def run(self):
     core.wait(self.delay)
     event._onPygletKey(symbol=self.key, modifiers=None, emulated=True)
Exemplo n.º 49
0
 def run(self):
     core.wait(self.delay)
     [event._onPygletKey(key, modifiers=self.modifiers, emulated=True)
      for key in self.keys]