blob: 31f072529693e6a742948b6e4f4389a257c17ea3 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
import telemetry.web_perf.metrics.timeline_based_metric as tbm_module
class FakeEvent(object):
def __init__(self, start, end):
self.start = start
self.end = end
class FakeRecord(object):
def __init__(self, start, end):
self.start = start
self.end = end
class TimelineBasedMetricTest(unittest.TestCase):
# pylint: disable=protected-access
def testTimeRangesHasOverlap(self):
# Test cases with overlap on one side
self.assertTrue(tbm_module._TimeRangesHasOverlap([(10, 20), (5, 15)]))
self.assertTrue(tbm_module._TimeRangesHasOverlap([(5, 15), (10, 20)]))
self.assertTrue(tbm_module._TimeRangesHasOverlap(
[(5, 15), (25, 30), (10, 20)]))
# Test cases with one range fall in the middle of other
self.assertTrue(tbm_module._TimeRangesHasOverlap([(10, 20), (15, 18)]))
self.assertTrue(tbm_module._TimeRangesHasOverlap([(15, 18), (10, 20)]))
self.assertTrue(tbm_module._TimeRangesHasOverlap(
[(15, 18), (40, 50), (10, 20)]))
self.assertFalse(tbm_module._TimeRangesHasOverlap([(15, 18), (20, 25)]))
self.assertFalse(tbm_module._TimeRangesHasOverlap(
[(1, 2), (2, 3), (0, 1)]))
def testIsEventInInteractions(self):
self.assertFalse(
tbm_module.IsEventInInteractions(
FakeEvent(0, 100),
[FakeRecord(5, 105), FakeRecord(50, 200), FakeRecord(300, 400)]))
self.assertFalse(
tbm_module.IsEventInInteractions(
FakeEvent(50, 100),
[FakeRecord(105, 205), FakeRecord(0, 45), FakeRecord(0, 90)]))
self.assertTrue(
tbm_module.IsEventInInteractions(
FakeEvent(50, 100),
[FakeRecord(5, 105), FakeRecord(0, 45), FakeRecord(0, 90)]))
self.assertTrue(
tbm_module.IsEventInInteractions(
FakeEvent(50, 100),
[FakeRecord(5, 45), FakeRecord(0, 45), FakeRecord(0, 100)]))