// 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 }; });