1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 tvcm.require('tracing.test_utils');
8 tvcm.require('tracing.trace_model.object_collection');
10 tvcm.unittest.testSuite('tracing.trace_model.object_collection_test', function() { // @suppress longLineCheck
11 var TestObjectInstance = function(parent, id, category, name, creationTs) {
12 tracing.trace_model.ObjectInstance.call(
13 this, parent, id, category, name, creationTs);
16 TestObjectInstance.prototype = {
17 __proto__: tracing.trace_model.ObjectInstance.prototype
20 test('objectInstanceSubtype', function() {
21 // Register that TestObjects are bound to TestObjectInstance.
22 tracing.trace_model.ObjectInstance.register(
23 'TestObject', TestObjectInstance);
25 var collection = new tracing.trace_model.ObjectCollection({ });
26 collection.idWasCreated(
27 '0x1000', 'cc', 'Frame', 10);
28 collection.idWasDeleted(
29 '0x1000', 'cc', 'Frame', 15);
30 collection.idWasCreated(
31 '0x1000', 'skia', 'TestObject', 20);
32 collection.idWasDeleted(
33 '0x1000', 'skia', 'TestObject', 25);
35 var testFrame = collection.getObjectInstanceAt('0x1000', 10);
36 assertTrue(testFrame instanceof tracing.trace_model.ObjectInstance);
37 assertFalse(testFrame instanceof TestObjectInstance);
39 var testObject = collection.getObjectInstanceAt('0x1000', 20);
40 assertTrue(testObject instanceof tracing.trace_model.ObjectInstance);
41 assertTrue(testObject instanceof TestObjectInstance);
43 tracing.trace_model.ObjectInstance.unregister('TestObject');
47 test('twoSnapshots', function() {
48 var collection = new tracing.trace_model.ObjectCollection({});
49 collection.idWasCreated(
50 '0x1000', 'cat', 'Frame', 10);
51 collection.addSnapshot(
52 '0x1000', 'cat', 'Frame', 10, {foo: 1});
53 collection.addSnapshot(
54 '0x1000', 'cat', 'Frame', 20, {foo: 2});
56 collection.updateBounds();
57 assertEquals(10, collection.bounds.min);
58 assertEquals(20, collection.bounds.max);
60 var s0 = collection.getSnapshotAt('0x1000', 1);
63 var s1 = collection.getSnapshotAt('0x1000', 10);
64 assertEquals(s1.args.foo, 1);
66 var s2 = collection.getSnapshotAt('0x1000', 15);
67 assertEquals(s2.args.foo, 1);
70 var s3 = collection.getSnapshotAt('0x1000', 20);
71 assertEquals(s3.args.foo, 2);
72 assertEquals(s1.object, s3.object);
74 var s4 = collection.getSnapshotAt('0x1000', 25);
78 test('twoObjectsSharingOneID', function() {
79 var collection = new tracing.trace_model.ObjectCollection({});
80 collection.idWasCreated(
81 '0x1000', 'cc', 'Frame', 10);
82 collection.idWasDeleted(
83 '0x1000', 'cc', 'Frame', 15);
84 collection.idWasCreated(
85 '0x1000', 'skia', 'Picture', 20);
86 collection.idWasDeleted(
87 '0x1000', 'skia', 'Picture', 25);
89 var frame = collection.getObjectInstanceAt('0x1000', 10);
90 assertEquals('cc', frame.category);
91 assertEquals('Frame', frame.name);
93 var picture = collection.getObjectInstanceAt('0x1000', 20);
94 assertEquals('skia', picture.category);
95 assertEquals('Picture', picture.name);
97 var typeNames = tvcm.dictionaryKeys(collection.getAllInstancesByTypeName());
100 ['Frame', 'Picture'],
104 collection.getAllInstancesByTypeName()['Frame']);
107 collection.getAllInstancesByTypeName()['Picture']);
110 test('createSnapDelete', function() {
111 var collection = new tracing.trace_model.ObjectCollection({});
112 collection.idWasCreated(
113 '0x1000', 'cat', 'Frame', 10);
114 collection.addSnapshot(
115 '0x1000', 'cat', 'Frame', 10, {foo: 1});
116 collection.idWasDeleted(
117 '0x1000', 'cat', 'Frame', 15);
119 collection.updateBounds();
120 assertEquals(10, collection.bounds.min);
121 assertEquals(15, collection.bounds.max);
123 var s10 = collection.getSnapshotAt('0x1000', 10);
124 var i10 = s10.objectInstance;
125 assertEquals(10, i10.creationTs);
126 assertEquals(15, i10.deletionTs);
129 test('boundsOnUndeletedObject', function() {
130 var collection = new tracing.trace_model.ObjectCollection({});
131 collection.idWasCreated(
132 '0x1000', 'cat', 'Frame', 10);
133 collection.addSnapshot(
134 '0x1000', 'cat', 'Frame', 15, {foo: 1});
136 collection.updateBounds();
137 assertEquals(collection.bounds.min, 10);
138 assertEquals(collection.bounds.max, 15);
141 test('autoDelete', function() {
142 var collection = new tracing.trace_model.ObjectCollection({});
143 collection.idWasCreated(
144 '0x1000', 'cat', 'Frame', 10);
145 collection.addSnapshot(
146 '0x1000', 'cat', 'Frame', 10, {foo: 1});
147 collection.autoDeleteObjects(15);
149 var s10 = collection.getSnapshotAt('0x1000', 10);
150 var i10 = s10.objectInstance;
151 assertEquals(i10.deletionTs, 15);