1 // Copyright 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.
6 * Test whether given model is valid.
7 * @param {Object} model
8 * @return {boolean} Model is valid or not.
10 var modelIsValid = function(model
) {
11 // Model object must contain 'name' and 'id'.
12 if (!('name' in model
) || !('id' in model
))
15 // Model object cant contain 'children' and 'size' together.
16 if ('children' in model
&& 'size' in model
||
17 !('children' in model
) && !('size' in model
))
20 // Model object must contain 'subs' and 'template' both or neither.
21 if ('subs' in model
&& !('template' in model
) ||
22 !('subs' in model
) && 'template' in model
)
25 // If model contains children, every child also must be valid.
26 if ('children' in model
) {
27 return model
.children
.reduce(function(previous
, current
) {
28 return previous
&& modelIsValid(current
);
35 // Test title format is file-name:function-name.
36 test('profiler:parseTemplate_', function() {
38 $.getJSON('../data/sample.json', function(data
) {
40 var profiler
= new Profiler(data
);
41 var models
= profiler
.parseTemplate_();
42 equal(models
.length
, data
.snapshots
.length
);
43 models
.forEach(function(model
) {
44 ok(modelIsValid(model
));
46 inspect(models
, 'models generated by profile:\n');