summaryrefslogtreecommitdiffstats
path: root/devtools/shared/webconsole/test/test_jsterm_last_result.html
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/webconsole/test/test_jsterm_last_result.html')
-rw-r--r--devtools/shared/webconsole/test/test_jsterm_last_result.html130
1 files changed, 130 insertions, 0 deletions
diff --git a/devtools/shared/webconsole/test/test_jsterm_last_result.html b/devtools/shared/webconsole/test/test_jsterm_last_result.html
new file mode 100644
index 000000000..e90ce14ed
--- /dev/null
+++ b/devtools/shared/webconsole/test/test_jsterm_last_result.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+ <meta charset="utf8">
+ <title>Test for the $_ getter</title>
+ <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript;version=1.8" src="common.js"></script>
+ <!-- Any copyright is dedicated to the Public Domain.
+ - http://creativecommons.org/publicdomain/zero/1.0/ -->
+</head>
+<body>
+<p>Test for the $_ getter</p>
+
+<iframe id="content-iframe" src="http://example.com/chrome/devtools/shared/webconsole/test/sandboxed_iframe.html"></iframe>
+
+<script class="testbody" type="text/javascript;version=1.8">
+SimpleTest.waitForExplicitFinish();
+let gState;
+
+function evaluateJS(input, callback) {
+ return new Promise((resolve, reject) => {
+ gState.client.evaluateJSAsync(input, response => {
+ if (callback) {
+ callback(response);
+ }
+ resolve(response);
+ });
+ });
+}
+
+function startTest()
+{
+ removeEventListener("load", startTest);
+ attachConsoleToTab([], state => {
+ gState = state;
+ let tests = [checkUndefinedResult,checkAdditionResult,checkObjectResult];
+ runTests(tests, testEnd);
+ });
+}
+
+let checkUndefinedResult = Task.async(function*() {
+ info ("$_ returns undefined if nothing has evaluated yet");
+ let response = yield evaluateJS("$_");
+ basicResultCheck(response, "$_", undefined);
+ nextTest();
+});
+
+let checkAdditionResult = Task.async(function*() {
+ info ("$_ returns last value and performs basic arithmetic");
+ let response = yield evaluateJS("2+2");
+ basicResultCheck(response, "2+2", 4);
+
+ response = yield evaluateJS("$_");
+ basicResultCheck(response, "$_", 4);
+
+ response = yield evaluateJS("$_ + 2");
+ basicResultCheck(response, "$_ + 2", 6);
+
+ response = yield evaluateJS("$_ + 4");
+ basicResultCheck(response, "$_ + 4", 10);
+
+ nextTest();
+});
+
+let checkObjectResult = Task.async(function*() {
+ info ("$_ has correct references to objects");
+
+ let response = yield evaluateJS("var foo = {bar:1}; foo;");
+ basicResultCheck(response, "var foo = {bar:1}; foo;", {
+ type: "object",
+ class: "Object",
+ actor: /[a-z]/,
+ });
+ checkObject(response.result.preview.ownProperties, {
+ bar: {
+ value: 1
+ }
+ });
+
+ response = yield evaluateJS("$_");
+ basicResultCheck(response, "$_", {
+ type: "object",
+ class: "Object",
+ actor: /[a-z]/,
+ });
+ checkObject(response.result.preview.ownProperties, {
+ bar: {
+ value: 1
+ }
+ });
+
+ top.foo.bar = 2;
+
+ response = yield evaluateJS("$_");
+ basicResultCheck(response, "$_", {
+ type: "object",
+ class: "Object",
+ actor: /[a-z]/,
+ });
+ checkObject(response.result.preview.ownProperties, {
+ bar: {
+ value: 2
+ }
+ });
+
+ nextTest();
+});
+
+function basicResultCheck(response, input, output) {
+ checkObject(response, {
+ from: gState.actor,
+ input: input,
+ result: output,
+ });
+ ok(!response.exception, "no eval exception");
+ ok(!response.helperResult, "no helper result");
+}
+
+function testEnd()
+{
+ closeDebugger(gState, function() {
+ gState = null;
+ SimpleTest.finish();
+ });
+}
+
+addEventListener("load", startTest);
+</script>
+</body>
+</html>