#!/usr/bin/env vpython3

# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""A metric implementation to record the raw inputs."""

from google.protobuf.timestamp_pb2 import Timestamp
from measure import Measure
from test_script_metrics_pb2 import TestScriptMetric


class DataPoints(Measure):
    def __init__(self, name: str) -> None:
        self._name = name
        self._points = []

    def record(self, value: float | int | bool) -> None:
        point = TestScriptMetric.DataPoint()
        if isinstance(value, bool):
            point.value = int(value)
        else:
            point.value = value
        # The function name is confusing, it updates itself to the current time.
        point.timestamp.GetCurrentTime()
        self._points.append(point)

    def dump(self) -> TestScriptMetric:
        result = TestScriptMetric()
        result.name = self._name
        result.points.points.extend(self._points)
        return result
