# Copyright 2015 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 infra_libs.ts_mon.common import pb_to_popo
from infra_libs.ts_mon.protos import metrics_pb2

class PbToPopoTest(unittest.TestCase):

  def test_convert(self):
    data_set = metrics_pb2.MetricsDataSet()
    data_set.metric_name = 'foo'
    data = data_set.data.add()
    data.bool_value = True
    data = data_set.data.add()
    data.bool_value = False
    data = data_set.data.add()
    data.int64_value = 200
    data = data_set.data.add()
    data.double_value = 123.456

    popo = pb_to_popo.convert(data_set)
    expected = {
      'metric_name': 'foo',
      'data': [
        {'bool_value': True},
        {'bool_value': False},
        {'int64_value': 200L},
        {'double_value': 123.456},
      ],
    }
    self.assertDictEqual(expected, popo)

