Skip to content

Commit

Permalink
Add more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mtlynch committed Aug 27, 2020
1 parent 7f833ce commit 4c84935
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 14 deletions.
34 changes: 21 additions & 13 deletions app/request_parsers/mouse_event.py
Expand Up @@ -31,25 +31,33 @@ class MouseEvent:


def parse_mouse_event(message):
buttons = message['buttons']
return MouseEvent(
buttons=_parse_button_state(message['buttons']),
relative_x=_parse_relative_position(message['relativeX']),
relative_y=_parse_relative_position(message['relativeY']),
)


def _parse_button_state(buttons):
if type(buttons) is not int:
raise InvalidButtonState('Button state must be an integer value: %s' %
buttons)
if not (0 <= buttons <= _MAX_BUTTON_STATE):
raise InvalidButtonState('Button state must be <= 0x%x: %s' %
(_MAX_BUTTON_STATE, buttons))
return buttons

relative_x = message['relativeX']
if not _validate_relative_position(relative_x):

def _parse_relative_position(relative_position):
if type(relative_position) is not float:
raise InvalidRelativePosition(
'Relative x-position must be between 0.0 and 1.0: %s' % relative_x)
relative_y = message['relativeY']
if not _validate_relative_position(relative_y):
'Relative position must be a float between 0.0 and 1.0: %s' %
relative_position)
if not _validate_relative_position(relative_position):
raise InvalidRelativePosition(
'Relative y-position must be between 0.0 and 1.0: %s' % relative_y)

return MouseEvent(
buttons=buttons,
relative_x=relative_x,
relative_y=relative_y,
)
'Relative position must be a float between 0.0 and 1.0: %s' %
relative_position)
return relative_position


def _validate_relative_position(relative_position):
Expand Down
24 changes: 23 additions & 1 deletion app/tests/request_parsers/test_mouse_event.py
Expand Up @@ -39,6 +39,14 @@ def test_rejects_too_high_buttons_value(self):
'relativeY': 0.75,
})

def test_rejects_non_numeric_buttons_value(self):
with self.assertRaises(mouse_event.InvalidButtonState):
mouse_event.parse_mouse_event({
'buttons': 'a',
'relativeX': 0.5,
'relativeY': 0.75,
})

def test_rejects_negative_relative_x_value(self):
with self.assertRaises(mouse_event.InvalidRelativePosition):
mouse_event.parse_mouse_event({
Expand Down Expand Up @@ -71,4 +79,18 @@ def test_rejects_too_high_relative_y_value(self):
'relativeY': 1.001,
})

# TODO(mtlynch): Add tests for non-numeric values.
def test_rejects_non_float_relative_x_value(self):
with self.assertRaises(mouse_event.InvalidRelativePosition):
mouse_event.parse_mouse_event({
'buttons': 0,
'relativeX': 'a',
'relativeY': 0.75,
})

def test_rejects_non_float_relative_y_value(self):
with self.assertRaises(mouse_event.InvalidRelativePosition):
mouse_event.parse_mouse_event({
'buttons': 0,
'relativeX': 0.5,
'relativeY': 'b',
})

0 comments on commit 4c84935

Please sign in to comment.