aboutsummaryrefslogtreecommitdiff
path: root/node_modules/selenium-webdriver/test/lib/testutil.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/selenium-webdriver/test/lib/testutil.js')
-rw-r--r--node_modules/selenium-webdriver/test/lib/testutil.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/node_modules/selenium-webdriver/test/lib/testutil.js b/node_modules/selenium-webdriver/test/lib/testutil.js
new file mode 100644
index 000000000..e68ca28ba
--- /dev/null
+++ b/node_modules/selenium-webdriver/test/lib/testutil.js
@@ -0,0 +1,90 @@
+// Licensed to the Software Freedom Conservancy (SFC) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The SFC licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+'use strict';
+
+const assert = require('assert');
+const sinon = require('sinon');
+
+
+class StubError extends Error {
+ constructor(opt_msg) {
+ super(opt_msg);
+ this.name = this.constructor.name;
+ }
+}
+exports.StubError = StubError;
+
+exports.throwStubError = function() {
+ throw new StubError;
+};
+
+exports.assertIsStubError = function(value) {
+ assert.ok(value instanceof StubError, value + ' is not a ' + StubError.name);
+};
+
+exports.assertIsInstance = function(ctor, value) {
+ assert.ok(value instanceof ctor, 'Not a ' + ctor.name + ': ' + value);
+};
+
+function callbackPair(cb, eb) {
+ if (cb && eb) {
+ throw new TypeError('can only specify one of callback or errback');
+ }
+
+ let callback = cb ? sinon.spy(cb) : sinon.spy();
+ let errback = eb ? sinon.spy(eb) : sinon.spy();
+
+ function assertCallback() {
+ assert.ok(callback.called, 'callback not called');
+ assert.ok(!errback.called, 'errback called');
+ if (callback.threw()) {
+ throw callback.exceptions[0];
+ }
+ }
+
+ function assertErrback() {
+ assert.ok(!callback.called, 'callback called');
+ assert.ok(errback.called, 'errback not called');
+ if (errback.threw()) {
+ throw errback.exceptions[0];
+ }
+ }
+
+ function assertNeither() {
+ assert.ok(!callback.called, 'callback called');
+ assert.ok(!errback.called, 'errback called');
+ }
+
+ return {
+ callback,
+ errback,
+ assertCallback,
+ assertErrback,
+ assertNeither
+ };
+}
+exports.callbackPair = callbackPair;
+
+
+exports.callbackHelper = function(cb) {
+ let pair = callbackPair(cb);
+ let wrapped = pair.callback.bind(null);
+ wrapped.assertCalled = () => pair.assertCallback();
+ wrapped.assertNotCalled = () => pair.assertNeither();
+ return wrapped;
+};