object_instance_test.js revision 66a37686207944273ced825e0e8b6b6375f8c3de
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)'use strict';
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base.require('tracing.test_utils');
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base.require('tracing.trace_model.object_instance');
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base.unittest.testSuite('tracing.trace_model.object_instance', function() {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  test('getSnapshotAtWithImplicitCreation', function() {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var instance = new tracing.trace_model.ObjectInstance(
13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch        {}, '0x1000', 'cat', 'n', 10);
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var s10 = instance.addSnapshot(10, 'a');
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    instance.addSnapshot(40, 'b');
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    instance.wasDeleted(60);
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var s1 = instance.getSnapshotAt(1);
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertEquals(s10, s1);
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    var s10 = instance.getSnapshotAt(10);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertEquals('a', s10.args);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertEquals(s10, instance.getSnapshotAt(15));
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    var s40 = instance.getSnapshotAt(40);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertEquals('b', s40.args);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertEquals(s40, instance.getSnapshotAt(50));
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertEquals(s40, instance.getSnapshotAt(59.9));
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  });
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  test('getSnapshotAtWithExplicitCreation', function() {
3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)    var instance = new tracing.trace_model.ObjectInstance(
3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)        {}, '0x1000', 'cat', 'n', 10);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    instance.creationTsWasExplicit = true;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    instance.addSnapshot(10, 'a');
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    instance.wasDeleted(60);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    assertThrows(function() {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      instance.getSnapshotAt(1);
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    });
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    var s10 = instance.getSnapshotAt(10);
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    assertEquals('a', s10.args);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertEquals(s10, instance.getSnapshotAt(15));
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  });
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  test('getSnapshotBeforeFirstSnapshot', function() {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var instance = new tracing.trace_model.ObjectInstance(
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {}, '0x1000', 'cat', 'n', 10);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var s15 = instance.addSnapshot(15, 'a');
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    instance.wasDeleted(40);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertEquals(s15, instance.getSnapshotAt(10));
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  });
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  test('getSnapshotAfterLastSnapshot', function() {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var instance = new tracing.trace_model.ObjectInstance(
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {}, '0x1000', 'cat', 'n', 10);
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var s15 = instance.addSnapshot(15, 'a');
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    instance.wasDeleted(40);
611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    assertEquals(s15, instance.getSnapshotAt(20));
631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  });
641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)});
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)