ed75aabae257a7489b151020ba707a7ebb8c9c45Dav GlassYUI.add('profiler-tests', function(Y) {
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var Assert = Y.Assert;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var Profiler = Y.Profiler;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass // Information needed to run tests
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var testObject = {
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass factorial : function (num){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass if (num > 1) {
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass return num * testObject.factorial(num-1);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass } else {
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass return 1;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass add : function (iterations){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var sum = 0;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < iterations; i++){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass sum++;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass };
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var root = {};
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass root.SuperType = function(){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.name = "SuperType";
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass root.SuperType.prototype.getName = function(){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass return this.name;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass };
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass root.SubType = function(){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.age = 29;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass root.SubType.superclass.constructor.call(this);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Y.extend(root.SubType, root.SuperType, {
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass getAge : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass return this.age;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass });
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass // Base Test Suite
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var suite = new Y.Test.Suite("Profiler Tests");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass // Test Case for basic function profiling
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass suite.add(new Y.Test.Case({
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass name : "Profiler Registration Tests",
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass tearDown: function(){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.clear();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //---------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass // Special assertions for profiler
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //---------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass assertFunctionIsRegistered : function (fullFuncName, shortFuncName, owner, originalFunction, newFunction){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var containerFunc = Profiler.getOriginal(fullFuncName);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areNotEqual(originalFunction, newFunction, fullFuncName + " function was not replaced.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(originalFunction, containerFunc, "Original " + fullFuncName + " function was not stored.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(originalFunction.prototype, containerFunc.prototype, fullFuncName + " prototype was not copied.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(shortFuncName, containerFunc.__yuiFuncName, fullFuncName + " function name was not stored.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(owner, containerFunc.__yuiOwner, "Owner for " + fullFuncName + "was not stored.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(Profiler.getReport(fullFuncName), "Report for " + fullFuncName + " function was not created.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass assertFunctionIsNotRegistered : function(fullFuncName, shortFuncName, owner, originalFunction, newFunction){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(originalFunction, newFunction, "Original " + fullFuncName + " function was not placed back on owner.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isUndefined(Profiler.getOriginal(fullFuncName), "Container for original " + fullFuncName + " function was not destroyed.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //---------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass // Tests
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //---------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testInstrument: function(){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var original = function() { return "Hello"; };
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var instrumented = Profiler.instrument("hello", original);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsRegistered("hello", "hello", null, original, instrumented);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testRegisterFunction : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFunction = testObject.factorial;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var fullFuncName = "testObject.factorial";
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerFunction(fullFuncName, testObject);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsRegistered(fullFuncName, "factorial", testObject, originalFunction, testObject.factorial);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterFunction(fullFuncName);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsNotRegistered(fullFuncName, "factorial", testObject, originalFunction, testObject.factorial);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testRegisterGlobalFunction : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFunction = getMessage;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var fullFuncName = "getMessage";
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerFunction(fullFuncName, window);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsRegistered(fullFuncName, "getMessage", window, originalFunction, getMessage);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterFunction(fullFuncName);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsNotRegistered(fullFuncName, "getMessage", window, originalFunction, getMessage);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testRegisterGlobalFunctionOnGlobalObject : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFunction = myObject.getName;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var fullFuncName = "myObject.getName";
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerFunction(fullFuncName);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsRegistered(fullFuncName, "getName", myObject, originalFunction, myObject.getName);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterFunction(fullFuncName);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsNotRegistered(fullFuncName, "getName", myObject, originalFunction, myObject.getName);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testRegisterObject : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var funcNames = [];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFuncs = {};
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //get all methods
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var propName in testObject){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass if (typeof propName == "function"){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass funcNames.push(propName);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass originalFuncs[propName] = testObject[propName];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerObject("testObject", testObject);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(Profiler.getOriginal("testObject"), "Object was not added to container.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //check each method
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < funcNames.length; i++){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var fullFuncName = "testobject." + funcNames[i];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFunction = originalFuncs[funcNames[i]];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsRegistered(fullFuncName, funcNames[i], testObject, originalFunction, testObject[funcNames[i]]);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterObject("testObject");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //check each method
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < funcNames.length; i++){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var fullFuncName = "testobject." + funcNames[i];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFunction = originalFuncs[funcNames[i]];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsNotRegistered(fullFuncName, funcNames[i], testObject, originalFunction, testObject[funcNames[i]]);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isUndefined(Profiler.getOriginal("testObject"), "Object was not removed from container.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testRegisterConstructor : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalConstructor = root.SuperType;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //gather stuff on the prototype
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var funcNames = [];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFuncs = {};
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var prop in root.SuperType.prototype){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass if (Y.Lang.isFunction(root.SuperType.prototype)){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass funcNames.push(prop);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass originalFuncs[prop] = root.SuperType.prototype[prop];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerConstructor("root.SuperType", root);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsRegistered("root.SuperType", "SuperType", root, originalConstructor, root.SuperType);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //check each method
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < funcNames.length; i++){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var fullFuncName = "root.SuperType.prototype." + funcNames[i];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFunction = originalFuncs[funcNames[i]];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsRegistered(fullFuncName, funcNames[i], root.SuperType.prototype, originalFunction, root.SuperType.prototype[funcNames[i]]);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterConstructor("root.SuperType");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //check each method
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < funcNames.length; i++){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var fullFuncName = "root.SuperType.prototype." + funcNames[i];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFunction = originalFuncs[funcNames[i]];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsNotRegistered(fullFuncName, funcNames[i], root.SuperType.prototype, originalFunction, root.SuperType.prototype[funcNames[i]]);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsNotRegistered("root.SuperType", "SuperType", root, originalConstructor, root.SuperType);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testRegisterConstructorWithInheritance : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalConstructor = root.SubType;
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //gather stuff on the prototype
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var funcNames = [];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFuncs = {};
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var prop in root.SubType.prototype){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass if (Y.Lang.isFunction(root.SubType.prototype)){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass funcNames.push(prop);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass originalFuncs[prop] = root.SubType.prototype[prop];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerConstructor("root.SubType", root);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsRegistered("root.SubType", "SubType", root, originalConstructor, root.SubType);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //check the superclass property
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(root.SubType.superclass, "SubType superclass should be an object.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(root.SuperType, root.SubType.superclass.constructor, "SubType superclass constructor should be SuperType.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //check each method
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < funcNames.length; i++){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var fullFuncName = "root.SubType.prototype." + funcNames[i];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFunction = originalFuncs[funcNames[i]];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsRegistered(fullFuncName, funcNames[i], root.SubType.prototype, originalFunction, root.SubType.prototype[funcNames[i]]);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterConstructor("root.SubType");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //check each method
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < funcNames.length; i++){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var fullFuncName = "root.SubType.prototype." + funcNames[i];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var originalFunction = originalFuncs[funcNames[i]];
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsNotRegistered(fullFuncName, funcNames[i], root.SubType.prototype, originalFunction, root.SubType.prototype[funcNames[i]]);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass this.assertFunctionIsNotRegistered("root.SubType", "SubType", root, originalConstructor, root.SubType);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testFunctionAccuracy1 : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerFunction("testObject.factorial", testObject);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var result = testObject.factorial(10);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterFunction("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(3628800, result, "Factorial result was incorrect.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testFunctionAccuracy2 : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerConstructor("root.SubType", root);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var o = new root.SubType();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var age = o.getAge();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var name = o.getName();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(29, age, "o.age was incorrect.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual("SuperType", name, "o.name was incorrect");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var o2 = new root.SubType();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass age = o2.getAge();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass name = o2.getName();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(29, age, "o2.Age was incorrect.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual("SuperType", name, "o2.Name was incorrect");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterConstructor("root.SubType");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }));
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass // Test Case for stopwatch functions
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass suite.add(new Y.Test.Case({
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass name : "Profiler Stopwatch Tests",
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass tearDown: function(){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.clear();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testStartStop: function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.start("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < 10000; i++){}
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.stop("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var report = Profiler.getReport("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(report, "Report should be an object.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(1, report.calls, "Call count should be 1.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.max, "Max should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.min, "Min should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.avg, "Average should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testStartStopPause : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.start("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < 10000; i++){}
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.pause("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < 10000; i++){}
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.start("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < 10000; i++){}
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.stop("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var report = Profiler.getReport("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(report, "Report should be an object.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(1, report.calls, "Call count should be 1.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.max, "Max should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.min, "Min should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.avg, "Average should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testStartTwice : function () {
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.start("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < 10000; i++){}
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.stop("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.start("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass for (var i=0; i < 10000; i++){}
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.stop("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var report = Profiler.getReport("random.entry");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(report, "Report should be an object.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(2, report.calls, "Call count should be 2.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.max, "Max should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.min, "Min should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.avg, "Average should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }));
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass // Test Case for report data
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //-------------------------------------------------------------------------
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass suite.add(new Y.Test.Case({
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass name : "Profiler Report Data Tests",
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testGetReport : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerFunction("testObject.factorial", testObject);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testObject.factorial(10);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var report = Profiler.getReport("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterFunction("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(report, "Report should be an object.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.calls, "Call count should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.max, "Max should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.min, "Min should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isNumber(report.avg, "Average should be a number.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testGetCallCount : function (){
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerFunction("testObject.factorial", testObject);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testObject.factorial(10);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var report = Profiler.getReport("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var callCount = Profiler.getCallCount("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterFunction("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(report, "Report should be an object.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(10, report.calls, "Report.calls is incorrect.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(10, callCount, "Call count is incorrect.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testGetMath: function() {
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //No Asserts, just syntax checking..
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerFunction("testObject.factorial", testObject);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testObject.factorial(10);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.getReport("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.getFunctionReport("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.getAverage("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.getMax("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.getMin("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterFunction("testObject.factorial");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass },
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass testGetReport : function () {
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.registerConstructor("root.SubType", root);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var o = new root.SubType();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass o.getAge();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass o.getName();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var o2 = new root.SubType();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass o2.getAge();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass o2.getName();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass o2.getAge();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass o2.getName();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass o2.getName();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass var report = Profiler.getFullReport();
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Profiler.unregisterConstructor("root.SubType");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(report, "Report should be an object.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(report["root.SubType"], "There should be an entry for root.SubType.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(2, report["root.SubType"].calls, "root.SubType should have a call count of 2.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass //Assert.isObject(report["root.SubType.prototype"], "There should be an entry for root.SubType.prototype.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(report["root.SubType.prototype.getAge"], "There should be an entry for getAge()");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(3, report["root.SubType.prototype.getAge"].calls, "getAge() should have a call count of 3.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.isObject(report["root.SubType.prototype.getName"], "There should be an entry for getName()");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Assert.areEqual(4, report["root.SubType.prototype.getName"].calls, "getName() should have a call count of 4.");
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass }));
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass Y.Test.Runner.add(suite);
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass
ed75aabae257a7489b151020ba707a7ebb8c9c45Dav Glass});