33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass/**
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * A test suite that can contain a collection of TestCase and TestSuite objects.
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @param {String||Object} data The name of the test suite or an object containing
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * a name property as well as setUp and tearDown methods.
5aab19b8b78189ce79cf89283f2d505566d4e6a8Dav Glass * @namespace Test
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @class TestSuite
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @constructor
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass */
d0199bcbfc68b65683c19c4e3e0c38e238142e7eDav GlassYUITest.TestSuite = function (data) {
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass /**
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * The name of the test suite.
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @type String
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @property name
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass */
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass this.name = "";
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass /**
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * Array of test suites and test cases.
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @type Array
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @property items
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @private
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass */
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass this.items = [];
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass //initialize the properties
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass if (typeof data == "string"){
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass this.name = data;
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass } else if (data instanceof Object){
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass for (var prop in data){
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass if (data.hasOwnProperty(prop)){
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass this[prop] = data[prop];
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass }
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass }
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass }
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass //double-check name
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass if (this.name === ""){
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass this.name = "testSuite" + (+new Date());
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass }
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass};
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
d0199bcbfc68b65683c19c4e3e0c38e238142e7eDav GlassYUITest.TestSuite.prototype = {
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass //restore constructor
d0199bcbfc68b65683c19c4e3e0c38e238142e7eDav Glass constructor: YUITest.TestSuite,
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass /**
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * Adds a test suite or test case to the test suite.
d0199bcbfc68b65683c19c4e3e0c38e238142e7eDav Glass * @param {Test.TestSuite||YUITest.TestCase} testObject The test suite or test case to add.
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @return {Void}
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @method add
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass */
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass add : function (testObject) {
d0199bcbfc68b65683c19c4e3e0c38e238142e7eDav Glass if (testObject instanceof YUITest.TestSuite || testObject instanceof YUITest.TestCase) {
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass this.items.push(testObject);
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass }
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass return this;
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass },
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass //-------------------------------------------------------------------------
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass // Stub Methods
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass //-------------------------------------------------------------------------
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass /**
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * Function to run before each test is executed.
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @return {Void}
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @method setUp
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass */
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass setUp : function () {
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass },
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass /**
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * Function to run after each test is executed.
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @return {Void}
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass * @method tearDown
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass */
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass tearDown: function () {
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass }
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass
33d85edf47749fa345d7b636b9b4b9d0d0386f44Dav Glass};