<!DOCTYPE html>
<!--
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.
-->

<link rel="import" href="/tracing/model/global_memory_dump.html">
<link rel="import" href="/tracing/model/heap_dump.html">
<link rel="import" href="/tracing/model/model.html">
<link rel="import" href="/tracing/model/process_memory_dump.html">
<link rel="import" href="/tracing/model/stack_frame.html">

<script>
'use strict';

tr.b.unittest.testSuite(function() {
  var Model = tr.Model;
  var GlobalMemoryDump = tr.model.GlobalMemoryDump;
  var ProcessMemoryDump = tr.model.ProcessMemoryDump;
  var StackFrame = tr.model.StackFrame;
  var HeapEntry = tr.model.HeapEntry;
  var HeapDump = tr.model.HeapDump;

  test('heapDumps', function() {
    var model = new tr.Model();
    var process = model.getOrCreateProcess(89);
    var gmd = new GlobalMemoryDump(model, 42);
    model.globalMemoryDumps.push(gmd);
    var pmd = new ProcessMemoryDump(gmd, process, 42);
    process.memoryDumps.push(pmd);

    var rootFrame = new StackFrame(undefined, tr.b.GUID.allocate(), undefined);
    var childFrame = new StackFrame(rootFrame, tr.b.GUID.allocate(), 'draw');
    rootFrame.addChild(childFrame);

    var dump = new HeapDump(pmd);
    assert.strictEqual(dump.processMemoryDump, pmd);
    assert.lengthOf(dump.entries, 0);

    var entry1 = dump.addEntry(childFrame, 'HTMLImportLoader', 1024);
    assert.strictEqual(entry1.heapDump, dump);
    assert.strictEqual(entry1.leafStackFrame, childFrame);
    assert.strictEqual(entry1.objectTypeName, 'HTMLImportLoader');
    assert.equal(entry1.size, 1024);

    var entry2 = dump.addEntry(undefined, undefined, 1048576);
    assert.strictEqual(entry2.heapDump, dump);
    assert.isUndefined(entry2.leafStackFrame);
    assert.isUndefined(entry2.objectTypeName);
    assert.equal(entry2.size, 1048576);

    assert.deepEqual(dump.entries, [entry1, entry2]);
  });
});
</script>
