# Copyright 2019 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

from devil.android.perf import surface_stats_collector


class SurfaceStatsCollectorTests(unittest.TestCase):
  def testParseFrameData_simple(self):
    actual = surface_stats_collector.ParseFrameData([
        '16954612',
        '7657467895508   7657482691352   7657493499756',
        '7657484466553   7657499645964   7657511077881',
        '7657500793457   7657516600576   7657527404785',
    ], parse_timestamps=True)
    self.assertEqual(
        actual, (16.954612, [7657482.691352, 7657499.645964, 7657516.600576]))

  def testParseFrameData_withoutTimestamps(self):
    actual = surface_stats_collector.ParseFrameData([
        '16954612',
        '7657467895508   7657482691352   7657493499756',
        '7657484466553   7657499645964   7657511077881',
        '7657500793457   7657516600576   7657527404785',
    ], parse_timestamps=False)
    self.assertEqual(
        actual, (16.954612, []))

  def testParseFrameData_withWarning(self):
    actual = surface_stats_collector.ParseFrameData([
        'SurfaceFlinger appears to be unresponsive, dumping anyways',
        '16954612',
        '7657467895508   7657482691352   7657493499756',
        '7657484466553   7657499645964   7657511077881',
        '7657500793457   7657516600576   7657527404785',
    ], parse_timestamps=True)
    self.assertEqual(
        actual, (16.954612, [7657482.691352, 7657499.645964, 7657516.600576]))
