Пример #1
0
def test_resize():
    mbd = MockBlueDot()
    mbd.resize(4, 3)

    assert mbd.cols == 4
    assert mbd.rows == 3
    assert len(mbd.buttons) == 12
Пример #2
0
def test_rotation():
    mbd = MockBlueDot()
    mbd.mock_client_connected()

    def rotation(dot, col, row):
        event_rotated = Event()
        dot.when_rotated = lambda: event_rotated.set()
        assert not event_rotated.is_set()

        #press the blue dot, no rotation
        mbd.mock_blue_dot_pressed(col, row, -0.1, 1)
        assert not event_rotated.is_set()
        r = BlueDotRotation(mbd[col, row].interaction,
                            mbd[0, 0].rotation_segments)
        assert not r.valid
        assert r.value == 0
        assert not r.clockwise
        assert not r.anti_clockwise

        #rotate clockwise
        event_rotated.clear()
        mbd.mock_blue_dot_moved(col, row, 0.1, 1)
        assert event_rotated.is_set()
        r = BlueDotRotation(mbd[col, row].interaction,
                            mbd[col, row].rotation_segments)
        assert r.value == 1
        assert r.valid
        assert r.clockwise
        assert not r.anti_clockwise

        #rotate anti-clockwise
        event_rotated.clear()
        mbd.mock_blue_dot_moved(col, row, -0.1, 1)
        assert event_rotated.is_set()
        r = BlueDotRotation(mbd[col, row].interaction,
                            mbd[col, row].rotation_segments)
        assert r.value == -1
        assert r.valid
        assert not r.clockwise
        assert r.anti_clockwise

        # background
        # rotate clockwise again
        event_rotated.clear()
        dot.set_when_rotated(lambda: delay_function(event_rotated.set, 0.2),
                             background=True)
        mbd.mock_blue_dot_moved(col, row, 0.1, 1)
        assert not event_rotated.is_set()
        assert event_rotated.wait(1)

    rotation(mbd, 0, 0)
    rotation(mbd[0, 0], 0, 0)

    mbd.resize(2, 1)

    rotation(mbd, 1, 0)
    rotation(mbd[1, 0], 1, 0)
Пример #3
0
def test_position():
    mbd = MockBlueDot()
    mbd.mock_client_connected()

    def position(dot, col, row):
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        assert not mbd.position.top
        assert mbd.position.middle
        assert not mbd.position.bottom
        assert not mbd.position.left
        assert not mbd.position.right

        mbd.mock_blue_dot_moved(col, row, 1, 0)
        assert not mbd.position.top
        assert not mbd.position.middle
        assert not mbd.position.bottom
        assert not mbd.position.left
        assert mbd.position.right

        mbd.mock_blue_dot_moved(col, row, -1, 0)
        assert not mbd.position.top
        assert not mbd.position.middle
        assert not mbd.position.bottom
        assert mbd.position.left
        assert not mbd.position.right

        mbd.mock_blue_dot_moved(col, row, 0, 1)
        assert mbd.position.top
        assert not mbd.position.middle
        assert not mbd.position.bottom
        assert not mbd.position.left
        assert not mbd.position.right

        mbd.mock_blue_dot_moved(col, row, 0, -1)
        assert not mbd.position.top
        assert not mbd.position.middle
        assert mbd.position.bottom
        assert not mbd.position.left
        assert not mbd.position.right

        mbd.mock_blue_dot_moved(col, row, 0.1234, -0.4567)
        assert mbd.position.x == 0.1234
        assert mbd.position.y == -0.4567

        mbd.mock_blue_dot_moved(col, row, 1, 0)
        assert mbd.position.distance == 1
        assert mbd.position.angle == 90

    position(mbd, 0, 0)
    position(mbd[0, 0], 0, 0)
    mbd.resize(2, 1)
    position(mbd[1, 0], 1, 0)
Пример #4
0
def test_pressed_moved_released():
    mbd = MockBlueDot()
    mbd.mock_client_connected()

    def pressed_moved_released(dot, col, row):

        #initial value
        assert not mbd.is_pressed
        assert dot.value == 0

        #pressed
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        assert dot.is_pressed
        assert dot.value == 1

        #released
        mbd.mock_blue_dot_released(col, row, 0, 0)
        assert not dot.is_pressed
        assert dot.value == 0

        #wait_for_press
        delay_function(lambda: mbd.mock_blue_dot_pressed(col, row, 0, 0), 0.5)
        assert dot.wait_for_press(1)
        assert not dot.wait_for_release(0)

        #wait_for_release
        delay_function(lambda: mbd.mock_blue_dot_released(col, row, 0, 0), 0.5)
        assert dot.wait_for_release(1)
        assert not dot.wait_for_press(0)

    def not_pressed(dot, col, row):
        assert not dot.is_pressed
        assert not dot.value == 1

        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        assert not dot.is_pressed
        assert not dot.value == 1

    # single button
    pressed_moved_released(mbd, 0, 0)
    pressed_moved_released(mbd[0, 0], 0, 0)

    # resize to 2 buttons
    mbd.resize(2, 1)

    # test second button and main
    pressed_moved_released(mbd, 1, 0)
    pressed_moved_released(mbd[1, 0], 1, 0)

    # test second button isn't pressed by first
    not_pressed(mbd[1, 0], 0, 0)
Пример #5
0
def test_dot_appearance():
    mbd = MockBlueDot()
    assert mbd.color == "blue"
    assert mbd.border == False
    assert mbd.square == False
    assert mbd.visible == True

    mbd.resize(2, 1)

    for button in mbd.buttons:
        assert button.color == "blue"
        assert button.border == False
        assert button.square == False
        assert button.visible == True

    mbd[1, 0].color = "red"
    mbd[1, 0].border = True
    mbd[1, 0].square = True
    mbd[1, 0].visible = False

    assert mbd.color == "blue"
    assert mbd.border == False
    assert mbd.square == False
    assert mbd.visible == True

    assert mbd[0, 0].color == "blue"
    assert mbd[0, 0].border == False
    assert mbd[0, 0].square == False
    assert mbd[0, 0].visible == True

    assert mbd[1, 0].color == "red"
    assert mbd[1, 0].border == True
    assert mbd[1, 0].square == True
    assert mbd[1, 0].visible == False

    mbd.color = "red"
    mbd.border = True
    mbd.square = True
    mbd.visible = False

    assert mbd.color == "red"
    assert mbd.border == True
    assert mbd.square == True
    assert mbd.visible == False

    assert mbd[0, 0].color == "red"
    assert mbd[0, 0].border == True
    assert mbd[0, 0].square == True
    assert mbd[0, 0].visible == False
Пример #6
0
def test_interaction():
    mbd = MockBlueDot()
    mbd.mock_client_connected()

    def interaction(dot, col, row):
        assert dot.interaction == None

        mbd.mock_blue_dot_pressed(col, row, -1, 0)
        assert dot.interaction.active
        assert len(dot.interaction.positions) == 1
        assert dot.interaction.distance == 0
        assert dot.interaction.pressed_position.x == -1
        assert dot.interaction.pressed_position.y == 0
        assert dot.interaction.current_position.x == -1
        assert dot.interaction.current_position.y == 0
        assert dot.interaction.previous_position == None
        assert dot.interaction.released_position == None

        mbd.mock_blue_dot_moved(col, row, 0, 0)
        assert dot.interaction.active
        assert len(dot.interaction.positions) == 2
        assert dot.interaction.distance == 1
        assert dot.interaction.pressed_position.x == -1
        assert dot.interaction.pressed_position.y == 0
        assert dot.interaction.current_position.x == 0
        assert dot.interaction.current_position.y == 0
        assert dot.interaction.previous_position.x == -1
        assert dot.interaction.previous_position.y == 0
        assert dot.interaction.released_position == None

        mbd.mock_blue_dot_released(col, row, 1, 0)
        assert not dot.interaction.active
        assert len(dot.interaction.positions) == 3
        assert dot.interaction.distance == 2
        assert dot.interaction.pressed_position.x == -1
        assert dot.interaction.pressed_position.y == 0
        assert dot.interaction.current_position.x == 1
        assert dot.interaction.current_position.y == 0
        assert dot.interaction.previous_position.x == 0
        assert dot.interaction.previous_position.y == 0
        assert dot.interaction.released_position.x == 1
        assert dot.interaction.released_position.y == 0

    interaction(mbd[0, 0], 0, 0)

    mbd.resize(2, 1)

    interaction(mbd[1, 0], 1, 0)
Пример #7
0
def test_when_pressed_moved_released():
    mbd = MockBlueDot()
    mbd.mock_client_connected()

    def when_pressed_moved_released(dot, col, row):
        #when_pressed
        event_pressed = Event()
        dot.when_pressed = lambda: event_pressed.set()

        #when_double_pressed
        event_double_pressed = Event()
        dot.when_double_pressed = lambda: event_double_pressed.set()

        #when_moved
        event_moved = Event()
        dot.when_moved = lambda: event_moved.set()

        #when_released
        event_released = Event()
        dot.when_released = lambda: event_released.set()

        assert not event_pressed.is_set()
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        assert event_pressed.is_set()

        assert not event_moved.is_set()
        mbd.mock_blue_dot_moved(col, row, 1, 1)
        assert event_moved.is_set()

        assert not event_released.is_set()
        mbd.mock_blue_dot_released(col, row, 0, 0)
        assert event_released.is_set()

        assert not event_double_pressed.is_set()
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        assert event_double_pressed.is_set()

    when_pressed_moved_released(mbd, 0, 0)
    when_pressed_moved_released(mbd[0, 0], 0, 0)

    mbd.resize(2, 1)

    when_pressed_moved_released(mbd, 1, 0)
    when_pressed_moved_released(mbd[1, 0], 1, 0)
Пример #8
0
def test_swipe():
    mbd = MockBlueDot()
    mbd.mock_client_connected()

    def swipe(dot, col, row):
        def simulate_swipe(col, row, pressed_x, pressed_y, moved_x, moved_y,
                           released_x, released_y):

            mbd.mock_blue_dot_pressed(col, row, pressed_x, pressed_y)
            mbd.mock_blue_dot_moved(col, row, moved_x, moved_y)
            mbd.mock_blue_dot_released(col, row, released_x, released_y)

        #wait_for_swipe
        delay_function(lambda: simulate_swipe(col, row, -1, 0, 0, 0, 1, 0),
                       0.5)
        assert dot.wait_for_swipe(1)

        #when_swiped
        event_swiped = Event()
        dot.when_swiped = lambda: event_swiped.set()
        assert not event_swiped.is_set()

        #simulate swipe left to right
        simulate_swipe(col, row, -1, 0, 0, 0, 1, 0)
        #check event
        assert event_swiped.is_set()
        #get the swipe
        swipe = BlueDotSwipe(mbd[col, row].interaction)
        assert swipe.right
        assert not swipe.left
        assert not swipe.up
        assert not swipe.down

        #right to left
        event_swiped.clear()
        simulate_swipe(col, row, 1, 0, 0, 0, -1, 0)
        assert event_swiped.is_set()
        swipe = BlueDotSwipe(mbd[col, row].interaction)
        assert not swipe.right
        assert swipe.left
        assert not swipe.up
        assert not swipe.down

        #bottom to top
        event_swiped.clear()
        simulate_swipe(col, row, 0, -1, 0, 0, 0, 1)
        assert event_swiped.is_set()
        swipe = BlueDotSwipe(mbd[col, row].interaction)
        assert not swipe.right
        assert not swipe.left
        assert swipe.up
        assert not swipe.down

        #top to bottom
        event_swiped.clear()
        simulate_swipe(col, row, 0, 1, 0, 0, 0, -1)
        assert event_swiped.is_set()
        swipe = BlueDotSwipe(mbd[col, row].interaction)
        assert not swipe.right
        assert not swipe.left
        assert not swipe.up
        assert swipe.down

        # background
        event_swiped.clear()
        dot.set_when_swiped(lambda: delay_function(event_swiped.set, 0.2),
                            background=True)
        simulate_swipe(col, row, 0, 1, 0, 0, 0, -1)
        assert not event_swiped.is_set()
        assert event_swiped.wait(1)

    swipe(mbd, 0, 0)
    swipe(mbd[0, 0], 0, 0)

    mbd.resize(2, 1)

    swipe(mbd, 1, 0)
    swipe(mbd[1, 0], 1, 0)
Пример #9
0
def test_when_pressed_moved_released_background():
    mbd = MockBlueDot()
    mbd.mock_client_connected()

    def when_pressed_moved_released_background(dot, col, row):

        #when_pressed
        event_pressed = Event()
        dot.set_when_pressed(lambda: delay_function(event_pressed.set, 0.2),
                             background=True)

        #when_double_pressed
        event_double_pressed = Event()
        dot.set_when_double_pressed(
            lambda: delay_function(event_double_pressed.set, 0.2),
            background=True)

        #when_moved
        event_moved = Event()
        dot.set_when_moved(lambda: delay_function(event_moved.set, 0.2),
                           background=True)

        #when_released
        event_released = Event()
        dot.set_when_released(lambda: delay_function(event_released.set, 0.2),
                              background=True)

        # test that the events dont block
        assert not event_pressed.is_set()
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        assert not event_pressed.is_set()
        assert event_pressed.wait(1)

        assert not event_moved.is_set()
        mbd.mock_blue_dot_moved(col, row, 1, 1)
        assert not event_moved.is_set()
        assert event_moved.wait(1)

        assert not event_released.is_set()
        mbd.mock_blue_dot_released(col, row, 0, 0)
        assert not event_released.is_set()
        assert event_released.wait(1)

        # set pressed, moved, released to None so they dont wait
        mbd.set_when_pressed(None)
        mbd.set_when_moved(None)
        mbd.set_when_released(None)
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        mbd.mock_blue_dot_moved(col, row, 1, 1)
        mbd.mock_blue_dot_released(col, row, 0, 0)
        assert not event_double_pressed.is_set()
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        assert not event_double_pressed.is_set()
        assert event_double_pressed.wait(1)

    when_pressed_moved_released_background(mbd, 0, 0)
    when_pressed_moved_released_background(mbd[0, 0], 0, 0)

    mbd.resize(2, 1)

    when_pressed_moved_released_background(mbd, 1, 0)
    when_pressed_moved_released_background(mbd[1, 0], 1, 0)
Пример #10
0
def test_double_press():
    mbd = MockBlueDot()
    mbd.mock_client_connected()

    def simulate_double_press(col, row):
        #sleep longer than the double press time, to clear any past double presses!
        sleep(mbd.double_press_time + 0.1)
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        mbd.mock_blue_dot_released(col, row, 0, 0)
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        mbd.mock_blue_dot_released(col, row, 0, 0)

    def simulate_failed_double_press(col, row):
        sleep(mbd.double_press_time + 0.1)
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        mbd.mock_blue_dot_released(col, row, 0, 0)
        sleep(mbd.double_press_time + 0.1)
        mbd.mock_blue_dot_pressed(col, row, 0, 0)
        mbd.mock_blue_dot_released(col, row, 0, 0)

    def double_press(dot, col, row):
        # when_double_pressed
        event_double_pressed = Event()
        dot.when_double_pressed = lambda: event_double_pressed.set()

        simulate_failed_double_press(col, row)
        assert not event_double_pressed.is_set()

        simulate_double_press(col, row)
        assert event_double_pressed.is_set()

        # wait for double press
        # double press the blue dot
        delay_function(lambda: simulate_double_press(col, row), 0.2)

        # wait for double press
        assert dot.wait_for_double_press(1)

        # dont double press the blue dot
        delay_function(lambda: simulate_failed_double_press(col, row), 0.2)
        assert not dot.wait_for_double_press(1)

    def not_double_press(dot, col, row):
        # when_double_pressed
        event_double_pressed = Event()
        dot.when_double_pressed = lambda: event_double_pressed.set()

        simulate_double_press(col, row)
        assert not event_double_pressed.is_set()

    # single button
    double_press(mbd, 0, 0)
    double_press(mbd[0, 0], 0, 0)

    mbd.resize(2, 1)

    # two buttons
    double_press(mbd, 1, 0)
    double_press(mbd[1, 0], 1, 0)

    # first button doesnt double press second button
    not_double_press(mbd[1, 0], 0, 0)