Index: webkit/glue/devtools/js/tests.js |
=================================================================== |
--- webkit/glue/devtools/js/tests.js (revision 19804) |
+++ webkit/glue/devtools/js/tests.js (working copy) |
@@ -53,6 +53,18 @@ |
/** |
+ * Contains assertion tests that string contains substring. |
+ * @param {string} string Outer. |
+ * @param {string} substring Inner. |
+ */ |
+TestSuite.prototype.assertContains = function(string, substring) { |
+ if (string.indexOf(substring) == -1) { |
+ this.fail('Expected to: "' + string + '" to contain "' + substring + '"'); |
+ } |
+}; |
+ |
+ |
+/** |
* Runs all global functions starting with 'test' as unit tests. |
*/ |
TestSuite.prototype.runAllTests = function() { |
@@ -137,6 +149,18 @@ |
}; |
+/** |
+ * @param {string} panelName Name of the panel to show. |
+ */ |
+TestSuite.prototype.showPanel = function(panelName) { |
+ // Open Scripts panel. |
+ var toolbar = document.getElementById('toolbar'); |
+ var button = toolbar.getElementsByClassName(panelName)[0]; |
+ button.click(); |
+ this.assertEquals(WebInspector.panels[panelName], |
+ WebInspector.currentPanel); |
+}; |
+ |
// UI Tests |
@@ -180,8 +204,7 @@ |
* Tests that resources tab is enabled when corresponding item is selected. |
*/ |
TestSuite.prototype.testEnableResourcesTab = function(controller) { |
- WebInspector.panels.elements.hide(); |
- WebInspector.panels.resources.show(); |
+ this.showPanel('resources'); |
var test = this; |
var oldAddResource = WebInspector.addResource; |
@@ -208,15 +231,14 @@ |
* Test that profiler works. |
*/ |
TestSuite.prototype.testProfilerTab = function(controller) { |
- var panel = WebInspector.panels.profiles; |
- WebInspector.panels.elements.hide(); |
- panel.show(); |
+ this.showPanel('profiles'); |
var oldAddProfile = WebInspector.addProfile; |
WebInspector.addProfile = function(profile) { |
WebInspector.addProfile = oldAddProfile; |
oldAddProfile.call(this, profile); |
+ var panel = WebInspector.panels.profiles; |
panel.showProfile(profile); |
var node = panel.visibleView.profileDataGridTree.children[0]; |
// Iterate over displayed functions and search for a function |
@@ -276,21 +298,84 @@ |
if (parsedDebuggerTestJs && parsedDebuggerTestPageHtml) { |
controller.reportOk(); |
} |
+ controller.reportOk(); |
yurys
2009/07/03 11:07:05
remove this?
|
}; |
- // Open Scripts panel. |
- var toolbar = document.getElementById('toolbar'); |
- var scriptsButton = toolbar.getElementsByClassName('scripts')[0]; |
- scriptsButton.click(); |
+ this.showPanel('scripts'); |
- this.assertEquals(WebInspector.panels.scripts, WebInspector.currentPanel); |
- |
// Wait until all scripts are added to the debugger. |
controller.takeControl(); |
}; |
-var uiTests = new TestSuite(); |
+TestSuite.ConsoleEnter = { |
yurys
2009/07/03 11:07:05
ConsoleEnterEvent would sound better
|
+ keyIdentifier : 'Enter', |
+ preventDefault : function() {}, |
+ stopPropagation : function() {} |
+}; |
+/** |
+ * Tests console eval. |
+ */ |
+TestSuite.prototype.testConsoleEval = function(controller) { |
+ var test = this; |
+ var originalConsoleAddMessage = WebInspector.Console.prototype.addMessage; |
+ WebInspector.Console.prototype.addMessage = function(commandResult) { |
+ originalConsoleAddMessage.call(this, commandResult); |
+ WebInspector.Console.prototype.addMessage = originalConsoleAddMessage; |
+ test.assertEquals('123', commandResult.toMessageElement().textContent); |
+ controller.reportOk(); |
+ }; |
+ |
+ WebInspector.console.visible = true; |
+ WebInspector.console.prompt.text = '123'; |
+ WebInspector.console.promptElement.handleKeyEvent(TestSuite.ConsoleEnter); |
+ |
+ controller.takeControl(); |
+}; |
+ |
+ |
+/** |
+ * Tests console log. |
+ */ |
+TestSuite.prototype.testConsoleLog = function(controller) { |
+ WebInspector.console.visible = true; |
+ var messages = WebInspector.console.messages; |
+ var index = 0; |
+ |
+ var test = this; |
+ var assertNext = function(line, message, opt_level, opt_count, opt_substr) { |
+ var elem = messages[index++].toMessageElement(); |
+ var clazz = elem.getAttribute('class'); |
+ var expectation = (opt_count || '') + 'console_test_page.html:' + |
+ line + message; |
+ if (opt_substr) { |
+ test.assertContains(elem.textContent, expectation); |
+ } else { |
+ test.assertEquals(expectation, elem.textContent); |
+ } |
+ if (opt_level) { |
+ test.assertContains(clazz, 'console-' + opt_level + '-level'); |
+ } |
+ }; |
+ |
+ assertNext('5', 'log', 'log'); |
+ assertNext('7', 'debug', 'log'); |
+ assertNext('9', 'info', 'log'); |
+ assertNext('11', 'warn', 'warning'); |
+ assertNext('13', 'error', 'error'); |
+ assertNext('15', 'Message format number 1, 2 and 3.5'); |
+ assertNext('17', 'Message format for string'); |
+ assertNext('19', 'Object Object'); |
+ assertNext('22', 'repeated', 'log', 5); |
+ assertNext('26', 'count: 1'); |
+ assertNext('26', 'count: 2'); |
+ assertNext('29', 'group', 'group-title'); |
+ index++; |
+ assertNext('33', 'timer:', 'log', '', true); |
+}; |
+ |
+ |
+var uiTests = new TestSuite(); |
} |