blob: 08fb5f789188fcfedf9b84904d48752fa56cb94a [file] [edit]
# Copyright 2018 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 tracing.value import histogram_deserializer
from tracing.value import histogram_serializer
from tracing.value import histogram_unittest
from tracing.value.diagnostics import diagnostic
from tracing.value.diagnostics import generic_set
from tracing.value.diagnostics import related_name_map
class RelatedNameMapUnittest(unittest.TestCase):
def testRoundtrip(self):
names = related_name_map.RelatedNameMap()
names.Set('a', 'A')
d = names.AsDict()
clone = diagnostic.Diagnostic.FromDict(d)
self.assertEqual(
histogram_unittest.ToJSON(d), histogram_unittest.ToJSON(clone.AsDict()))
self.assertEqual(clone.Get('a'), 'A')
def testMerge(self):
a_names = related_name_map.RelatedNameMap()
a_names.Set('a', 'A')
b_names = related_name_map.RelatedNameMap()
b_names.Set('b', 'B')
self.assertTrue(a_names.CanAddDiagnostic(b_names))
self.assertTrue(b_names.CanAddDiagnostic(a_names))
self.assertFalse(a_names.CanAddDiagnostic(generic_set.GenericSet([])))
a_names.AddDiagnostic(b_names)
self.assertEqual(a_names.Get('b'), 'B')
a_names.AddDiagnostic(b_names)
self.assertEqual(a_names.Get('b'), 'B')
b_names.Set('a', 'C')
with self.assertRaises(ValueError):
a_names.AddDiagnostic(b_names)
def testEquals(self):
a_names = related_name_map.RelatedNameMap()
a_names.Set('a', 'A')
self.assertNotEqual(a_names, generic_set.GenericSet([]))
b_names = related_name_map.RelatedNameMap()
self.assertNotEqual(a_names, b_names)
b_names.Set('a', 'B')
self.assertNotEqual(a_names, b_names)
b_names.Set('a', 'A')
self.assertEqual(a_names, b_names)
def testDeserialize(self):
d = histogram_deserializer.HistogramDeserializer([
'a', 'b', 'c', [0, 1, 2], 'd', 'e', 'f'])
names = related_name_map.RelatedNameMap.Deserialize([3, 4, 5, 6], d)
self.assertEqual(names.Get('a'), 'd')
self.assertEqual(names.Get('b'), 'e')
self.assertEqual(names.Get('c'), 'f')
def testSerialize(self):
names = related_name_map.RelatedNameMap()
names.Set('a', 'x')
names.Set('b', 'y')
names.Set('c', 'z')
s = histogram_serializer.HistogramSerializer()
self.assertEqual(names.Serialize(s), [6, 0, 1, 2])