blob: 4d2cb78887c7bb11dd61e3683d311432cf3726bb [file] [edit]
<!DOCTYPE html>
<!--
Copyright 2017 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.
-->
<link rel="import" href="/tracing/core/test_utils.html">
<link rel="import" href="/tracing/value/diagnostics/breakdown.html">
<link rel="import" href="/tracing/value/histogram_deserializer.html">
<link rel="import" href="/tracing/value/histogram_serializer.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
test('merge', function() {
const a = new tr.v.d.Breakdown();
a.set('x', 1);
a.set('y', 2);
const b = new tr.v.d.Breakdown();
b.set('y', 3);
b.set('z', 4);
assert.isTrue(a.canAddDiagnostic(b));
assert.isTrue(b.canAddDiagnostic(a));
a.addDiagnostic(b);
assert.strictEqual(a.get('x'), 1);
assert.strictEqual(a.get('y'), 5);
assert.strictEqual(a.get('z'), 4);
a.colorScheme = 'fake color scheme';
assert.isFalse(a.canAddDiagnostic(b));
assert.isFalse(b.canAddDiagnostic(a));
});
test('deserialize', function() {
const b = tr.v.d.Breakdown.deserialize(
[4, 3, 1, 2, 3],
new tr.v.HistogramDeserializer([
'a', 'b', 'c',
[0, 1, 2],
'colors',
]));
assert.strictEqual(b.colorScheme, 'colors');
assert.strictEqual(b.get('a'), 1);
assert.strictEqual(b.get('b'), 2);
assert.strictEqual(b.get('c'), 3);
});
test('serialize', function() {
const s = new tr.v.HistogramSerializer();
const b = tr.v.d.Breakdown.fromEntries([['a', 10], ['b', 20]]);
assert.deepEqual(b.serialize(s), [0, 3, 10, 20]);
assert.strictEqual(s.getOrAllocateId(''), 0);
assert.strictEqual(s.getOrAllocateId('a'), 1);
assert.strictEqual(s.getOrAllocateId('b'), 2);
assert.strictEqual(s.getOrAllocateId([1, 2]), 3);
});
});
</script>