blob: 1a2eef80b8be278d430da59073e22e7a19dbe4a2 [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/generic_set.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.GenericSet(['a']);
const b = new tr.v.d.GenericSet(['b']);
assert.isTrue(a.canAddDiagnostic(b));
assert.isTrue(b.canAddDiagnostic(a));
const ab = a.clone();
ab.addDiagnostic(b);
assert.deepEqual(Array.from(ab), ['a', 'b']);
const bab = b.clone();
bab.addDiagnostic(ab);
assert.deepEqual(Array.from(bab), ['b', 'a']);
});
test('mergeDictionaries', function() {
const a = new tr.v.d.GenericSet([{a: 1, b: 2}]);
const b = new tr.v.d.GenericSet([{b: 2, a: 1}]);
const ab = a.clone();
assert.strictEqual(tr.b.getOnlyElement(a), tr.b.getOnlyElement(ab));
ab.addDiagnostic(b);
assert.lengthOf(ab, 1);
assert.strictEqual(tr.b.getOnlyElement(a), tr.b.getOnlyElement(ab));
});
test('addDiagnosticWithNull', function() {
const a = new tr.v.d.GenericSet([]);
const b = new tr.v.d.GenericSet([null]);
a.addDiagnostic(b);
assert.lengthOf(a, 1);
assert.isTrue(a.has(null));
});
test('hashKey', function() {
const a = new tr.v.d.GenericSet(['a', 'b']);
assert.strictEqual(a.hashKey, 'ab');
});
test('setsWithoutObjectsSupportFastPath', function() {
const a = new tr.v.d.GenericSet(['a', 'b']);
assert.isDefined(a.hashKey);
});
test('setsWithObjectsDoNotSupportFastPath', function() {
const a = new tr.v.d.GenericSet([{foo: 'bar'}]);
assert.isUndefined(a.hashKey);
});
test('deserialize', function() {
const d = new tr.v.HistogramDeserializer(['aaa', 'bbb']);
const a = tr.v.d.GenericSet.deserialize(0, d);
assert.strictEqual(tr.b.getOnlyElement(a), 'aaa');
const b = tr.v.d.GenericSet.deserialize([0, 1], d);
assert.lengthOf(b, 2);
assert.isTrue(b.has('aaa'));
assert.isTrue(b.has('bbb'));
});
test('serialize', function() {
const s = new tr.v.HistogramSerializer();
let g = new tr.v.d.GenericSet(['a']);
assert.strictEqual(g.serialize(s), 0);
assert.strictEqual(s.getOrAllocateId('a'), 0);
g = new tr.v.d.GenericSet(['a', 'b']);
assert.deepEqual(g.serialize(s), [0, 1]);
assert.strictEqual(s.getOrAllocateId('b'), 1);
});
});
</script>