2 new revisions:

Revision: 7242f05b38be
Author:   Janne Härkönen <[email protected]>
Date:     Tue Jun  7 04:09:07 2011
Log: large code style cleanup, also changed signatures of Suite(), Test() a...
http://code.google.com/p/robotframework/source/detail?r=7242f05b38be

Revision: 02ed31f16d9d
Author:   Janne Härkönen <[email protected]>
Date:     Tue Jun  7 04:09:41 2011
Log:      Automated merge with https://robotframework.googlecode.com/hg/
http://code.google.com/p/robotframework/source/detail?r=02ed31f16d9d

==============================================================================
Revision: 7242f05b38be
Author:   Janne Härkönen <[email protected]>
Date:     Tue Jun  7 04:09:07 2011
Log: large code style cleanup, also changed signatures of Suite(), Test() and Keyword()
http://code.google.com/p/robotframework/source/detail?r=7242f05b38be

Modified:
 /src/robot/webcontent/js/model.js
 /src/robot/webcontent/js/testdata.js

=======================================
--- /src/robot/webcontent/js/model.js   Mon Jun  6 08:38:20 2011
+++ /src/robot/webcontent/js/model.js   Tue Jun  7 04:09:07 2011
@@ -1,4 +1,4 @@
-window.model = (function () {
+window.model = function () {

     var STATUS = {
         pass:"pass",
@@ -11,44 +11,52 @@
         teardown:'TEARDOWN'
     };

- function Suite(parent, name, source, doc, status, times, stats, metadata) {
-        var suite = {};
-        populateCommonAttrs(suite, name, doc, status, times);
-        suite.parent = parent;
-        suite.source = source;
-        suite.fullname = parent ? parent.fullname + "." + name : name;
-        suite.statusText = status.status.toUpperCase();
-        setStats(suite, stats);
-        suite.metadata = metadata;
+    function Suite(data) {
+        var suite = createModelObject(data);
+        suite.source = data.source;
+ suite.fullname = data.parent ? data.parent.fullname + "." + data.name : data.name;
+        suite.statusText = data.status.status.toUpperCase();
+        setStats(suite, data.statistics);
+        suite.metadata = data.metadata;
         suite.populateKeywords = createIterablePopulator("Keyword");
         suite.populateTests = createIterablePopulator("Test");
         suite.populateSuites = createIterablePopulator("Suite");
- suite.children = function () { return suite.keywords().concat(suite.tests()).concat(suite.suites()); }; - suite.hasTeardownFailure = function () { return suiteTeardownFailed(suite) || status.parentSuiteTeardownFailed; };
+        suite.children = function () {
+ return suite.keywords().concat(suite.tests()).concat(suite.suites());
+        };
+        suite.hasTeardownFailure = function () {
+ return suiteTeardownFailed(suite) || data.status.parentSuiteTeardownFailed;
+        };
         suite.getFailureMessage = function () {
-            if(status.parentSuiteTeardownFailed)
+            if (data.status.parentSuiteTeardownFailed)
                 return "Teardown of the parent suite failed.";
-            if(suite.hasTeardownFailure())
-                return "Suite teardown failed:\n"+
- suite.keyword(suite.numberOfKeywords-1).message(0).text;
+            if (suite.hasTeardownFailure())
+                return "Suite teardown failed:\n" +
+ suite.keyword(suite.numberOfKeywords - 1).message(0).text;
         };
         suite.searchTests = function (predicate) {
             var tests = [];
-            for (var i=0; i<this.numberOfSuites; i++)
+            for (var i = 0; i < this.numberOfSuites; i++)
                 tests = tests.concat(this.suite(i).searchTests(predicate));
             return tests.concat(util.filter(this.tests(), predicate));
         };
         suite.searchTestsByTag = function (tag) {
- return suite.searchTests(function (test) { return containsTag(test.tags, tag.label, tag.info == 'combined'); });
+            return suite.searchTests(function (test) {
+ return containsTag(test.tags, tag.label, tag.info == 'combined');
+            });
         };
         suite.findSuiteByName = function (name) {
             return findSuiteByName(suite, name);
         };
         suite.allTests = function () {
-            return suite.searchTests(function (test) { return true; });
+            return suite.searchTests(function (test) {
+                return true;
+            });
         };
         suite.criticalTests = function () {
- return suite.searchTests(function (test) { return test.isCritical; });
+            return suite.searchTests(function (test) {
+                return test.isCritical;
+            });
         };
         return suite;
     }
@@ -59,14 +67,18 @@
             return util.contains(testTags, util.normalize(tagname));
         if (tagname.indexOf(' & ') != -1) {
             var tagnames = tagname.split(' & ');
- return util.all(util.map(tagnames, function (name) { return containsTag(testTags, name, true); }));
+            return util.all(util.map(tagnames, function (name) {
+                return containsTag(testTags, name, true);
+            }));
         }
         if (tagname.indexOf(' NOT ') != -1) {
             var tagnames = tagname.split(' NOT ');
             var required = tagnames[0];
             var notAllowed = tagnames.slice(1);
             return containsTag(testTags, required, true) &&
- util.all(util.map(notAllowed, function (name) { return !containsTag(testTags, name, true); }))
+                    util.all(util.map(notAllowed, function (name) {
+                        return !containsTag(testTags, name, true);
+                    }))
         }
         var matcher = util.Matcher(tagname)
         return util.any(util.map(testTags, matcher.matches));
@@ -76,7 +88,7 @@
         if (suite.fullname == name)
             return suite;
         var subSuites = suite.suites();
-        for (var i=0; i<subSuites.length; i++) {
+        for (var i = 0; i < subSuites.length; i++) {
             var match = findSuiteByName(subSuites[i], name);
             if (match)
                 return match;
@@ -84,9 +96,9 @@
         return null;
     }

-    function suiteTeardownFailed(suite){
+    function suiteTeardownFailed(suite) {
         if (suite.numberOfKeywords) {
-            var kw = suite.keyword(suite.numberOfKeywords -1);
+            var kw = suite.keyword(suite.numberOfKeywords - 1);
             if (kw.type == KEYWORD_TYPE.teardown)
                 return kw.status == STATUS.fail;
         }
@@ -97,6 +109,7 @@
         for (var name in stats) {
             suite[name] = stats[name];
         }
+        // TODO: move to templates
         if (suite.totalFailed == 0)
             suite.totalFailureClass = 'pass';
         else
@@ -107,41 +120,49 @@
             suite.criticalFailureClass = 'fail';
     }

-    function populateCommonAttrs(obj, name, doc, status, times) {
-        obj.name = name;
-        obj.documentation = doc;
-        obj.status = status.status;
-        obj.times = times;
+    function createModelObject(data) {
+        var obj = {};
+        obj.name = data.name;
+        obj.documentation = data.doc; // TODO: rename documentation -> doc
+        obj.status = data.status.status;
+        obj.times = data.times;
+        return obj
     }

- function Test(parent, name, doc, timeout, isCritical, status, times, tags) {
-        var test = {};
-        populateCommonAttrs(test, name, doc, status, times);
- test.fullname= parent.fullname + "." + test.name; // TODO: is this used?, could be function also
+    function Test(data) {
+        var names = ['name', 'doc', 'status', '...']
+        var test = createModelObject(data);
+ test.fullname = data.parent.fullname + "." + test.name; // TODO: is this used?, could be function also
         test.parentName = function () {
- return parent.fullname.replace('.', ' . ', 'g') + ' . '; // TODO: duplicate + return data.parent.fullname.replace('.', ' . ', 'g') + ' . '; // TODO: duplicate
         };
-        test.timeout = timeout;
+        test.timeout = data.timeout;
         test.populateKeywords = createIterablePopulator("Keyword");
-        test.children = function () { return test.keywords(); };
-        test.isCritical = isCritical;
- test.statusText = test.status.toUpperCase() + (isCritical ? " (critical)" : "");
-        test.tags = tags;
-        test.parentSuiteTeardownFailed = status.parentSuiteTeardownFailed;
- test.getFailureMessage = function () { return getTestFailureMessage(test); };
+        test.children = function () {
+            return test.keywords();
+        };
+        test.isCritical = data.isCritical;
+ test.statusText = test.status.toUpperCase() + (test.isCritical ? " (critical)" : ""); // TODO: move to templates
+        test.tags = data.tags;
+ test.parentSuiteTeardownFailed = data.status.parentSuiteTeardownFailed;
+        test.getFailureMessage = function () {
+            return getTestFailureMessage(test);
+        };
         return test;
     }

-    function Keyword(type, name, args, doc, status, times, parent, index) {
-        var kw = {};
-        populateCommonAttrs(kw, name, doc, status, times);
-        kw.type = type;
+    function Keyword(data) {
+        var kw = createModelObject(data);
+        kw.type = data.type;
+        var parent = data.parent
var parentPath = (parent.path === undefined) ? parent.fullname : parent.path;
-        kw.path = parentPath + "." + index;
-        kw.arguments = args;
+        kw.path = parentPath + "." + data.index;
+        kw.arguments = data.args;
         kw.populateKeywords = createIterablePopulator("Keyword");
         kw.populateMessages = createIterablePopulator("Message");
-        kw.children = function () { return kw.keywords(); };
+        kw.children = function () {
+            return kw.keywords();
+        };
         kw.getFailureMessage = getKeywordFailureMessage;
         return kw;
     }
@@ -151,8 +172,12 @@
         message.level = level;
         message.levelText = level.toUpperCase();
         message.time = time;
- message.shortTime = function () {return timeFromDate(message.time);};
-        message.date = function () {return formatDate(message.time);};
+        message.shortTime = function () {
+            return timeFromDate(message.time);
+        };
+        message.date = function () {
+            return formatDate(message.time);
+        };
         message.text = text;
         message.link = link;
         return message;
@@ -161,7 +186,7 @@
     function Status(status, parentSuiteTeardownFailed) {
         return {
             parentSuiteTeardownFailed: parentSuiteTeardownFailed,
-            status: parentSuiteTeardownFailed? model.FAIL : status
+            status: parentSuiteTeardownFailed ? model.FAIL : status
         };
     }

@@ -207,15 +232,15 @@

     function formatElapsed(elapsed, excludeMillis) {
         var millis = elapsed;
-            var hours = Math.floor(millis / (60 * 60 * 1000));
-            millis -= hours * 60 * 60 * 1000;
-            var minutes = Math.floor(millis / (60 * 1000));
-            millis -= minutes * 60 * 1000;
-            var seconds = Math.floor(millis / 1000);
-            millis -= seconds * 1000;
-            if (excludeMillis)
-                millis = undefined;
-            return shortTime(hours, minutes, seconds, millis);
+        var hours = Math.floor(millis / (60 * 60 * 1000));
+        millis -= hours * 60 * 60 * 1000;
+        var minutes = Math.floor(millis / (60 * 1000));
+        millis -= minutes * 60 * 1000;
+        var seconds = Math.floor(millis / 1000);
+        millis -= seconds * 1000;
+        if (excludeMillis)
+            millis = undefined;
+        return shortTime(hours, minutes, seconds, millis);
     }

     function padTo(number, len) {
@@ -266,10 +291,10 @@
         if (msg)
             return msg;
         if (this.message(0)) return this.message(0).text;
-        }
+    }

     function getFailureMessageFromKeywords(obj) {
-        for(var i = 0; i < obj.numberOfKeywords; i++){
+        for (var i = 0; i < obj.numberOfKeywords; i++) {
             var child = obj.keyword(i);
             if (child.status == STATUS.fail)
                 return child.getFailureMessage();
@@ -298,7 +323,7 @@
         containsTag: containsTag,  // Exposed for tests
         shortTime: shortTime
     };
-}());
+}();

 window.stats = (function () {

=======================================
--- /src/robot/webcontent/js/testdata.js        Wed Jun  1 03:41:18 2011
+++ /src/robot/webcontent/js/testdata.js        Tue Jun  7 04:09:07 2011
@@ -1,70 +1,70 @@
-window.testdata = (function () {
+window.testdata = function () {

     var elementsById = {};
var LEVEL = {I:'info', H:'info', T:'trace', W:'warn', E:'error', D:'debug', F:'fail'};
     var KEYWORD_TYPE = {kw: 'KEYWORD',
-                        setup:'SETUP',
-                        teardown:'TEARDOWN'};
-
-    function addElement(elem){
+        setup:'SETUP',
+        teardown:'TEARDOWN'};
+
+    function addElement(elem) {
         elem.id = uuid();
         elementsById[elem.id] = elem;
         return elem;
     }

-    function uuid(){
+    function uuid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
-            var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
+ var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
             return v.toString(16);
         });
     }

-    function timestamp(millis){
+    function timestamp(millis) {
         return new Date(window.basemillis + millis);
     }

-    function get(id){
+    function get(id) {
         return texts.get(id)
     }

-    function times(stats){
+    function times(stats) {
         var start = timestamp(stats[1]);
         var elapsed = stats[2];
-        var stop = timestamp(stats[1]+elapsed);
+        var stop = timestamp(stats[1] + elapsed);
         return [start, stop, elapsed];
     }

-    function message(element){
+    function message(element) {
         return addElement(
model.Message(LEVEL[element[1]], timestamp(element[0]), get(element[2]), element[3]));
     }

-    function status(stats){
-        return (stats[0] == "P" ? model.PASS : model.FAIL);
-    }
-
-    function statuz(stats, parentSuiteTeardownFailed){
-        return model.Status(status(stats), parentSuiteTeardownFailed);
+    function createStatus(stats, parentSuiteTeardownFailed) {
+        var status = (stats[0] == "P" ? model.PASS : model.FAIL);
+        return model.Status(status, parentSuiteTeardownFailed);
     }

     function last(items) {
-        return items[items.length-1];
+        return items[items.length - 1];
     }

     function childCreator(parent, childType) {
- return function (elem, index) { return addElement(childType(parent, elem, index)); };
+        return function (elem, index) {
+            return addElement(childType(parent, elem, index));
+        };
     }

-    function createKeyword(parent, element, index){
-        var kw = model.Keyword(
-                KEYWORD_TYPE[element[0]],
-                get(element[1]),
-                get(element[4]),
-                get(element[3]),
-                statuz(last(element)),
-                model.Times(times(last(element))),
-                parent,
-                index);
+    function createKeyword(parent, element, index) {
+        var kw = model.Keyword({
+            type: KEYWORD_TYPE[element[0]],
+            name: get(element[1]),
+            args: get(element[4]),
+            doc: get(element[3]),
+            status: createStatus(last(element)),
+            times: model.Times(times(last(element))),
+            parent: parent,
+            index: index
+        });
kw.populateKeywords(Populator(element, keywordMatcher, childCreator(kw, createKeyword)));
         kw.populateMessages(Populator(element, messageMatcher, message));
         return kw;
@@ -73,55 +73,52 @@
     var keywordMatcher = headerMatcher("kw", "setup", "teardown");

     function messageMatcher(elem) {
-        if(elem.length != 3) return false;
-        if(typeof(elem[0]) != "number") return false;
-        if(typeof(elem[1]) != "string") return false;
-        if(typeof(elem[2]) != "number") return false;
-        return true;
+        return (elem.length == 3 &&
+                typeof(elem[0]) == "number" &&
+                typeof(elem[1]) == "string" &&
+                typeof(elem[2]) == "number");
     }

-    function tags(taglist){
-        var tgs = [];
-        for(var i in taglist) tgs[i] = get(taglist[i]);
-        return tgs;
+    function tags(taglist) {
+        return util.map(taglist, texts.get);
     }

     function createTest(suite, element) {
-        var test = model.Test(
-                suite,
-                get(element[1]),
-                get(element[4]),
-                get(element[2]),
-                (element[3] == "Y"),
-                statuz(last(element), suite.hasTeardownFailure()),
-                model.Times(times(last(element))),
-                tags(element[element.length-2])
-        );
+        var test = model.Test({
+            parent: suite,
+            name: get(element[1]),
+            doc: get(element[4]),
+            timeout: get(element[2]),
+            isCritical: (element[3] == "Y"),
+ status: createStatus(last(element), suite.hasTeardownFailure()),
+            times: model.Times(times(last(element))),
+            tags: tags(element[element.length - 2])
+        });
test.populateKeywords(Populator(element, keywordMatcher, childCreator(test, createKeyword)));
         return test;
     }

     function createSuite(parent, element) {
-        var suit = model.Suite(
-                parent,
-                element[2],
-                element[1],
-                get(element[3]),
- statuz(element[element.length-2], parent && parent.hasTeardownFailure()),
-                model.Times(times(element[element.length-2])),
-                suiteStats(last(element)),
-                parseMetadata(element[4])
-        );
- suit.populateKeywords(Populator(element, keywordMatcher, childCreator(suit, createKeyword))); - suit.populateTests(Populator(element, headerMatcher("test"), childCreator(suit, createTest))); - suit.populateSuites(Populator(element, headerMatcher("suite"), childCreator(suit, createSuite)));
-        return suit;
+        var suite = model.Suite({
+            parent: parent,
+            name: element[2],
+            source: element[1],
+            doc: get(element[3]),
+ status: createStatus(element[element.length - 2], parent && parent.hasTeardownFailure()),
+            times: model.Times(times(element[element.length - 2])),
+            statistics: suiteStats(last(element)),
+            metadata: parseMetadata(element[4])
+        });
+ suite.populateKeywords(Populator(element, keywordMatcher, childCreator(suite, createKeyword))); + suite.populateTests(Populator(element, headerMatcher("test"), childCreator(suite, createTest))); + suite.populateSuites(Populator(element, headerMatcher("suite"), childCreator(suite, createSuite)));
+        return suite;
     }

-    function parseMetadata(data){
+    function parseMetadata(data) {
         var metadata = {};
-        for(var key in data){
-               metadata[key] = get(data[key]);
+        for (var key in data) {
+            metadata[key] = get(data[key]);
         }
         return metadata;
     }
@@ -137,132 +134,134 @@
         };
     }

-    function headerMatcher(){
-       var args = arguments;
-        return function(elem){
-                       for (var i=0; i < args.length; i++)
-                               if (elem[0] == args[i]) return true;
-                       return false;
-                       };
+    function headerMatcher() {
+        var args = arguments;
+        return function(elem) {
+            for (var i = 0; i < args.length; i++)
+                if (elem[0] == args[i]) return true;
+            return false;
+        };
     }

     function Populator(element, matcher, creator) {
         var items = findElements(element, matcher);
         return {
             numberOfItems: items.length,
- creator: function (index) {return creator(items[index], index);}
+            creator: function (index) {
+                return creator(items[index], index);
+            }
         };
     }

     function findElements(fromElement, matcher) {
         var results = new Array();
-        for(var i = 0; i < fromElement.length; i++)
-            if(matcher(fromElement[i]))
+        for (var i = 0; i < fromElement.length; i++)
+            if (matcher(fromElement[i]))
                 results.push(fromElement[i]);
         return results;
     }

     function suite() {
         var elem = window.data[2];
-        if(elementsById[elem.id])
+        if (elementsById[elem.id])
             return elem;
         var main = addElement(createSuite(undefined, elem));
         window.data[2] = main;
         return main;
     }

-    function findById(id){
+    function findById(id) {
         return elementsById[id];
     }

-    function pathToKeyword(fullname){
+    function pathToKeyword(fullname) {
         var root = suite();
-        if(fullname.indexOf(root.fullname+".") != 0) return [];
-        return keywordPathTo(fullname+".", root, [root.id]);
+        if (fullname.indexOf(root.fullname + ".") != 0) return [];
+        return keywordPathTo(fullname + ".", root, [root.id]);
     }

-    function pathToTest(fullname){
+    function pathToTest(fullname) {
         var root = suite();
-        if(fullname.indexOf(root.fullname+".") != 0) return [];
+        if (fullname.indexOf(root.fullname + ".") != 0) return [];
         return testPathTo(fullname, root, [root.id]);
     }

-    function pathToSuite(fullname){
+    function pathToSuite(fullname) {
         var root = suite();
-        if(fullname.indexOf(root.fullname) != 0) return [];
-        if(fullname == root.fullname) return [root.id];
+        if (fullname.indexOf(root.fullname) != 0) return [];
+        if (fullname == root.fullname) return [root.id];
         return suitePathTo(fullname, root, [root.id]);
     }

-    function keywordPathTo(fullname, current, result){
-        if(fullname == "") return result;
-        for(var i = 0; i < current.numberOfKeywords; i++){
+    function keywordPathTo(fullname, current, result) {
+        if (fullname == "") return result;
+        for (var i = 0; i < current.numberOfKeywords; i++) {
             var kw = current.keyword(i);
-            if(fullname.indexOf(kw.path+".") == 0){
+            if (fullname.indexOf(kw.path + ".") == 0) {
                 result.push(kw.id);
-                if(fullname == kw.path+".")
+                if (fullname == kw.path + ".")
                     return result;
                 return keywordPathTo(fullname, kw, result);
             }
         }
-        for(var i = 0; i < current.numberOfTests; i++){
+        for (var i = 0; i < current.numberOfTests; i++) {
             var test = current.test(i);
-            if(fullname.indexOf(test.fullname+".") == 0){
+            if (fullname.indexOf(test.fullname + ".") == 0) {
                 result.push(test.id);
                 return keywordPathTo(fullname, test, result);
             }
         }
-        for(var i = 0; i < current.numberOfSuites; i++){
+        for (var i = 0; i < current.numberOfSuites; i++) {
             var suite = current.suite(i);
-            if(fullname.indexOf(suite.fullname+".") == 0){
+            if (fullname.indexOf(suite.fullname + ".") == 0) {
                 result.push(suite.id);
                 return keywordPathTo(fullname, suite, result);
             }
         }
     }

-    function testPathTo(fullname, currentSuite, result){
-        for(var i = 0; i < currentSuite.numberOfTests; i++){
+    function testPathTo(fullname, currentSuite, result) {
+        for (var i = 0; i < currentSuite.numberOfTests; i++) {
             var test = currentSuite.test(i);
-            if(fullname == test.fullname){
+            if (fullname == test.fullname) {
                 result.push(test.id);
                 return result;
             }
         }
-        for(var i = 0; i < currentSuite.numberOfSuites; i++){
+        for (var i = 0; i < currentSuite.numberOfSuites; i++) {
             var suite = currentSuite.suite(i);
-            if(fullname.indexOf(suite.fullname+".") == 0){
+            if (fullname.indexOf(suite.fullname + ".") == 0) {
                 result.push(suite.id);
                 return testPathTo(fullname, suite, result);
             }
         }
     }

-    function suitePathTo(fullname, currentSuite, result){
-        for(var i = 0; i < currentSuite.numberOfSuites; i++){
+    function suitePathTo(fullname, currentSuite, result) {
+        for (var i = 0; i < currentSuite.numberOfSuites; i++) {
             var suite = currentSuite.suite(i);
-            if(fullname == suite.fullname){
+            if (fullname == suite.fullname) {
                 result.push(suite.id);
                 return result;
             }
-            if(fullname.indexOf(suite.fullname+".") == 0){
+            if (fullname.indexOf(suite.fullname + ".") == 0) {
                 result.push(suite.id);
                 return suitePathTo(fullname, suite, result);
             }
         }
     }

-    function generated(){
+    function generated() {
         return timestamp(window.data[0]);
     }

-    function error(index){
-        if(window.data[4].length <= index)
+    function error(index) {
+        if (window.data[4].length <= index)
             return undefined;
         return message(window.data[4][index]);
     }

-    function statistics () {
+    function statistics() {
         var statData = window.data[3];
         return stats.Statistics(statData[0], statData[1], statData[2]);
     }
@@ -278,7 +277,7 @@
         statistics: statistics
     };

-}());
+}();

 window.texts = (function () {


==============================================================================
Revision: 02ed31f16d9d
Author:   Janne Härkönen <[email protected]>
Date:     Tue Jun  7 04:09:41 2011
Log:      Automated merge with https://robotframework.googlecode.com/hg/
http://code.google.com/p/robotframework/source/detail?r=02ed31f16d9d


Reply via email to