// Copyright (c) 2012 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.
/**
* @fileoverview Helper functions for use in tracing tests.
*/
/**
* goog.testing.assertion's assertEquals tweaked to do equality-to-a-constant.
* @param {*} a First value.
* @param {*} b Second value.
*/
function assertAlmostEquals(a, b) {
_validateArguments(2, arguments);
var var1 = nonCommentArg(1, 2, arguments);
var var2 = nonCommentArg(2, 2, arguments);
_assert(commentArg(2, arguments), Math.abs(var1 - var2) < 0.00001,
'Expected ' + _displayStringForValue(var1) + ' but was ' +
_displayStringForValue(var2));
}
cr.define('test_utils', function() {
function getAsync(url, cb) {
var req = new XMLHttpRequest();
req.open('GET', url, true);
req.onreadystatechange = function(aEvt) {
if (req.readyState == 4) {
window.setTimeout(function() {
if (req.status == 200) {
cb(req.responseText);
} else {
console.log('Failed to load ' + url);
}
}, 0);
}
};
req.send(null);
}
function newAsyncSlice(start, duration, startThread, endThread) {
return newAsyncSliceNamed('a', start, duration, startThread, endThread);
}
function newAsyncSliceNamed(name, start, duration, startThread, endThread) {
var s = new tracing.TimelineAsyncSlice(name, 0, start);
s.duration = duration;
s.startThread = startThread;
s.endThread = endThread;
var subSlice = new tracing.TimelineAsyncSlice(name, 0, start);
subSlice.duration = duration;
subSlice.startThread = startThread;
subSlice.endThread = endThread;
s.subSlices = [subSlice];
return s;
}
function assertArrayishEquals(ref, val) {
assertEquals(ref.length, val.length);
for (var i = 0; i < ref.length; i++)
assertEquals(ref[i], val[i]);
}
return {
getAsync: getAsync,
newAsyncSlice: newAsyncSlice,
newAsyncSliceNamed: newAsyncSliceNamed,
assertArrayishEquals: assertArrayishEquals
};
});