blob: 979766aa76288471d614ba4f23f81040c07c8273 [file] [log] [blame]
# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import mtlib
from fuzzy_check import FuzzyCheck
from validators import *
# originally generated gestures:
# FlingStop
# ButtonDown(1)
# ButtonUp(1)
def Validate(raw, events, gestures):
# This log was recorded from the button getting pressed down without a finger
# on the pad, then a real finger taps, before the button is released.
# The test should pass if only the tap is registered, the button should be
# ignored entirely, so we check for a ButtonDown and ButtonUp that occur at
# the same time (tap) and reject if there is a time gap (button press)
down_event_type = mtlib.gesture_log.ButtonDownGesture
up_event_type = mtlib.gesture_log.ButtonUpGesture
down_events = [e for e in events if type(e) == down_event_type]
up_events = [e for e in events if type(e) == up_event_type]
# First check that there is only 1 click/tap seen (not both)
if (len(down_events) != 1 or len(up_events) != 1):
return 0.0, 'Too many button press events!'
# Next, measure the time delta between the down and the up
start_delta = down_events[0].start - up_events[0].start
end_delta = down_events[0].end - up_events[0].end
if (start_delta != 0.0 or end_delta != 0.0):
return 0.0, 'Button events occured too far apart!'
return 1.0, 'Success'