Beispiel #1
0
def test_visuals(hide_window):
    """Test EC visual methods."""
    with ExperimentController('test', **std_kwargs) as ec:
        pytest.raises(TypeError, visual.Circle, ec, n_edges=3.5)
        pytest.raises(ValueError, visual.Circle, ec, n_edges=3)
        circ = visual.Circle(ec)
        circ.draw()
        pytest.raises(ValueError, circ.set_radius, [1, 2, 3])
        pytest.raises(ValueError, circ.set_pos, [1])
        pytest.raises(ValueError, visual.Triangle, ec, [5, 6])
        tri = visual.Triangle(ec, [[-1, 0, 1], [-1, 1, -1]],
                              units='deg',
                              line_width=1.0)
        tri.draw()
        rect = visual.Rectangle(ec, [0, 0, 1, 1], line_width=1.0)
        rect.draw()
        diamond = visual.Diamond(ec, [0, 0, 1, 1], line_width=1.0)
        diamond.draw()
        pytest.raises(TypeError, visual.ConcentricCircles, ec, colors=dict())
        pytest.raises(TypeError,
                      visual.ConcentricCircles,
                      ec,
                      colors=np.array([]))
        pytest.raises(ValueError, visual.ConcentricCircles, ec, radii=[[1]])
        pytest.raises(ValueError, visual.ConcentricCircles, ec, radii=[1])
        fix = visual.ConcentricCircles(ec,
                                       radii=[1, 2, 3],
                                       colors=['w', 'k', 'y'])
        fix.set_pos([0.5, 0.5])
        fix.set_radius(0.1, 1)
        fix.set_radii([0.1, 0.2, 0.3])
        fix.set_color('w', 1)
        fix.set_colors(['w', 'k', 'k'])
        fix.set_colors(('w', 'k', 'k'))
        pytest.raises(IndexError, fix.set_color, 'w', 3)
        pytest.raises(ValueError, fix.set_colors, ['w', 'k'])
        pytest.raises(ValueError, fix.set_colors, np.array(['w', 'k', 'k']))
        pytest.raises(IndexError, fix.set_radius, 0.1, 3)
        pytest.raises(ValueError, fix.set_radii, [0.1, 0.2])
        fix.draw()
        fix_2 = visual.FixationDot(ec)
        fix_2.draw()
        pytest.raises(ValueError, rect.set_pos, [0, 1, 2])
        for shape in ((3, 3, 3), (3, 3, 4), (3, 3), (3, ), (3, ) * 4):
            data = np.ones(shape)
            if len(shape) not in (2, 3):
                pytest.raises(RuntimeError, visual.RawImage, ec, data)
            else:
                img = visual.RawImage(ec, data)
            print(img.bounds)  # test bounds
            assert_equal(img.scale, 1)
            # test get_rect
            imgrect = visual.Rectangle(ec, img.get_rect())
            assert_equal(imgrect._points['fill'][(0, 2, 0, 1), (0, 0, 1, 1)],
                         img.bounds)
            img.draw()
        line = visual.Line(ec, [[0, 1], [1, 0]])
        line.draw()
        pytest.raises(ValueError, line.set_line_width, 100)
        line.set_line_width(2)
        line.draw()
        pytest.raises(ValueError, line.set_coords, [0])
        line.set_coords([0, 1])
        ec.set_background_color('black')
        text = visual.Text(ec,
                           'Hello {color (255 0 0 255)}Everybody!',
                           pos=[0, 0],
                           color=[1, 1, 1],
                           wrap=False)
        text.draw()
        text.set_color(None)
        text.draw()
        text = visual.Text(ec,
                           'Thank you, come again.',
                           pos=[0, 0],
                           color='white',
                           attr=False)
        text.draw()
        text.set_color('red')
        text.draw()
        bar = visual.ProgressBar(ec, [0, 0, 1, .2])
        bar = visual.ProgressBar(ec, [0, 0, 1, 1], units='pix')
        bar.update_bar(.5)
        bar.draw()
        pytest.raises(ValueError,
                      visual.ProgressBar,
                      ec, [0, 0, 1, .1],
                      units='deg')
        pytest.raises(ValueError,
                      visual.ProgressBar,
                      ec, [0, 0, 1, .1],
                      colors=['w'])
        pytest.raises(ValueError, bar.update_bar, 500)
Beispiel #2
0
with ExperimentController('test', session='1', participant='2',
                          full_screen=False, window_size=[600, 600],
                          output_dir=None, version='dev') as ec:
    ec.screen_text('hello')

    # make an image with  alpha the x-dimension (columns), RGB upward
    img_buffer = np.zeros((120, 100, 4))
    img_buffer[:, :50, 3] = 1.0
    img_buffer[:, 50:, 3] = 0.5
    img_buffer[0] = 1
    for ii in range(3):
        img_buffer[ii * 40:(ii + 1) * 40, :, ii] = 1.0
    img = visual.RawImage(ec, img_buffer, scale=2.)

    # make a line, rectangle, diamond, and circle
    line = visual.Line(ec, [[-2, 2, 2, -2], [-2, 2, -2, -2]], units='deg',
                       line_color='w', line_width=2.0)
    rect = visual.Rectangle(ec, [0, 0, 2, 2], units='deg', fill_color='y')
    diamond = visual.Diamond(ec, [0, 0, 4, 4], units='deg', fill_color=None,
                             line_color='gray', line_width=2.0)
    circle = visual.Circle(ec, 1, units='deg', line_color='w', fill_color='k',
                           line_width=2.0)

    # do the drawing, then flip
    for obj in [img, line, rect, diamond, circle]:
        obj.draw()

    screenshot = ec.screenshot()  # must be called *before* the flip
    ec.flip()
    ec.wait_for_presses(0.5)

plt.ion()
Beispiel #3
0
def test_visuals():
    """Test EC visual methods
    """
    with ExperimentController('test', **std_kwargs) as ec:
        assert_raises(TypeError, visual.Circle, ec, n_edges=3.5)
        assert_raises(ValueError, visual.Circle, ec, n_edges=3)
        circ = visual.Circle(ec)
        circ.draw()
        assert_raises(ValueError, circ.set_radius, [1, 2, 3])
        assert_raises(ValueError, circ.set_pos, [1])
        assert_raises(ValueError, visual.Triangle, ec, [5, 6])
        tri = visual.Triangle(ec, [[-1, 0, 1], [-1, 1, -1]],
                              units='deg',
                              line_width=1.0)
        tri.draw()
        rect = visual.Rectangle(ec, [0, 0, 1, 1], line_width=1.0)
        rect.draw()
        diamond = visual.Diamond(ec, [0, 0, 1, 1], line_width=1.0)
        diamond.draw()
        assert_raises(TypeError, visual.ConcentricCircles, ec, colors=dict())
        assert_raises(TypeError,
                      visual.ConcentricCircles,
                      ec,
                      colors=np.array([]))
        assert_raises(ValueError, visual.ConcentricCircles, ec, radii=[[1]])
        assert_raises(ValueError, visual.ConcentricCircles, ec, radii=[1])
        fix = visual.ConcentricCircles(ec,
                                       radii=[1, 2, 3],
                                       colors=['w', 'k', 'y'])
        fix.set_pos([0.5, 0.5])
        fix.set_radius(0.1, 1)
        fix.set_radii([0.1, 0.2, 0.3])
        fix.set_color('w', 1)
        fix.set_colors(['w', 'k', 'k'])
        fix.set_colors(('w', 'k', 'k'))
        assert_raises(IndexError, fix.set_color, 'w', 3)
        assert_raises(ValueError, fix.set_colors, ['w', 'k'])
        assert_raises(ValueError, fix.set_colors, np.array(['w', 'k', 'k']))
        assert_raises(IndexError, fix.set_radius, 0.1, 3)
        assert_raises(ValueError, fix.set_radii, [0.1, 0.2])
        fix.draw()
        fix_2 = visual.FixationDot(ec)
        fix_2.draw()
        assert_raises(ValueError, rect.set_pos, [0, 1, 2])
        img = visual.RawImage(ec, np.ones((3, 3, 4)))
        print(img.bounds)  # test bounds
        assert_equal(img.scale, 1)
        img.draw()
        line = visual.Line(ec, [[0, 1], [1, 0]])
        line.draw()
        assert_raises(ValueError, line.set_line_width, 100)
        line.set_line_width(2)
        line.draw()
        assert_raises(ValueError, line.set_coords, [0])
        line.set_coords([0, 1])
        ec.set_background_color('black')
        text = visual.Text(ec,
                           'Hello {color (255 0 0 255)}Everybody!',
                           pos=[0, 0],
                           color=[1, 1, 1],
                           wrap=False)
        text.draw()
        text.set_color(None)
        text.draw()
        text = visual.Text(ec,
                           'Thank you, come again.',
                           pos=[0, 0],
                           color='white',
                           attr=False)
        text.draw()
        text.set_color('red')
        text.draw()

    # test video
    std_kwargs.update(dict(enable_video=True, window_size=(640, 480)))
    video_path = fetch_data_file('video/example-video.mp4')
    with ExperimentController('test', **std_kwargs) as ec:
        ec.load_video(video_path)
        ec.video.play()
        assert_raises(ValueError, ec.video.set_scale, 'foo')
        assert_raises(ValueError, ec.video.set_scale, -1)
        ec.video.set_scale('fill')
        ec.video.set_scale('fit')
        ec.video.set_scale(0.5)
        ec.video.set_pos(pos=(0.1, 0), units='norm')
        ec.wait_secs(0.2)
        ec.video.pause()
        ec.delete_video()
Beispiel #4
0
def test_visuals():
    """Test EC visual methods."""
    with ExperimentController('test', **std_kwargs) as ec:
        assert_raises(TypeError, visual.Circle, ec, n_edges=3.5)
        assert_raises(ValueError, visual.Circle, ec, n_edges=3)
        circ = visual.Circle(ec)
        circ.draw()
        assert_raises(ValueError, circ.set_radius, [1, 2, 3])
        assert_raises(ValueError, circ.set_pos, [1])
        assert_raises(ValueError, visual.Triangle, ec, [5, 6])
        tri = visual.Triangle(ec, [[-1, 0, 1], [-1, 1, -1]], units='deg',
                              line_width=1.0)
        tri.draw()
        rect = visual.Rectangle(ec, [0, 0, 1, 1], line_width=1.0)
        rect.draw()
        diamond = visual.Diamond(ec, [0, 0, 1, 1], line_width=1.0)
        diamond.draw()
        assert_raises(TypeError, visual.ConcentricCircles, ec, colors=dict())
        assert_raises(TypeError, visual.ConcentricCircles, ec,
                      colors=np.array([]))
        assert_raises(ValueError, visual.ConcentricCircles, ec, radii=[[1]])
        assert_raises(ValueError, visual.ConcentricCircles, ec, radii=[1])
        fix = visual.ConcentricCircles(ec, radii=[1, 2, 3],
                                       colors=['w', 'k', 'y'])
        fix.set_pos([0.5, 0.5])
        fix.set_radius(0.1, 1)
        fix.set_radii([0.1, 0.2, 0.3])
        fix.set_color('w', 1)
        fix.set_colors(['w', 'k', 'k'])
        fix.set_colors(('w', 'k', 'k'))
        assert_raises(IndexError, fix.set_color, 'w', 3)
        assert_raises(ValueError, fix.set_colors, ['w', 'k'])
        assert_raises(ValueError, fix.set_colors, np.array(['w', 'k', 'k']))
        assert_raises(IndexError, fix.set_radius, 0.1, 3)
        assert_raises(ValueError, fix.set_radii, [0.1, 0.2])
        fix.draw()
        fix_2 = visual.FixationDot(ec)
        fix_2.draw()
        assert_raises(ValueError, rect.set_pos, [0, 1, 2])
        img = visual.RawImage(ec, np.ones((3, 3, 4)))
        print(img.bounds)  # test bounds
        assert_equal(img.scale, 1)
        img.draw()
        line = visual.Line(ec, [[0, 1], [1, 0]])
        line.draw()
        assert_raises(ValueError, line.set_line_width, 100)
        line.set_line_width(2)
        line.draw()
        assert_raises(ValueError, line.set_coords, [0])
        line.set_coords([0, 1])
        ec.set_background_color('black')
        text = visual.Text(ec, 'Hello {color (255 0 0 255)}Everybody!',
                           pos=[0, 0], color=[1, 1, 1], wrap=False)
        text.draw()
        text.set_color(None)
        text.draw()
        text = visual.Text(ec, 'Thank you, come again.', pos=[0, 0],
                           color='white', attr=False)
        text.draw()
        text.set_color('red')
        text.draw()