166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.test_utils'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model.object_instance'); 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('tracing.trace_model.object_instance', function() { 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('getSnapshotAtWithImplicitCreation', function() { 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var instance = new tracing.trace_model.ObjectInstance( 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis {}, '0x1000', 'cat', 'n', 10); 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var s10 = instance.addSnapshot(10, 'a'); 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis instance.addSnapshot(40, 'b'); 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis instance.wasDeleted(60); 1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var s1 = instance.getSnapshotAt(1); 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(s10, s1); 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var s10 = instance.getSnapshotAt(10); 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('a', s10.args); 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(s10, instance.getSnapshotAt(15)); 2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var s40 = instance.getSnapshotAt(40); 2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('b', s40.args); 2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(s40, instance.getSnapshotAt(50)); 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(s40, instance.getSnapshotAt(59.9)); 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('getSnapshotAtWithExplicitCreation', function() { 3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var instance = new tracing.trace_model.ObjectInstance( 3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis {}, '0x1000', 'cat', 'n', 10); 3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis instance.creationTsWasExplicit = true; 3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis instance.addSnapshot(10, 'a'); 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis instance.wasDeleted(60); 3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertThrows(function() { 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis instance.getSnapshotAt(1); 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var s10 = instance.getSnapshotAt(10); 4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals('a', s10.args); 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(s10, instance.getSnapshotAt(15)); 4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('getSnapshotBeforeFirstSnapshot', function() { 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var instance = new tracing.trace_model.ObjectInstance( 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis {}, '0x1000', 'cat', 'n', 10); 5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var s15 = instance.addSnapshot(15, 'a'); 5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis instance.wasDeleted(40); 5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(s15, instance.getSnapshotAt(10)); 5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('getSnapshotAfterLastSnapshot', function() { 5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var instance = new tracing.trace_model.ObjectInstance( 5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis {}, '0x1000', 'cat', 'n', 10); 5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var s15 = instance.addSnapshot(15, 'a'); 6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis instance.wasDeleted(40); 6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis assertEquals(s15, instance.getSnapshotAt(20)); 6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 65