178 lines
7.2 KiB
HTML
178 lines
7.2 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
window.testObject = {
|
|
1: true,
|
|
"name": "Favorites",
|
|
"size": 456,
|
|
"data": {x: 42, y: 50},
|
|
};
|
|
|
|
function test()
|
|
{
|
|
let object;
|
|
let suite = InspectorTest.createAsyncSuite("RemoteObject.API");
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.getProperty.SuccessWithCallback.String",
|
|
async test() {
|
|
let finished = new WI.WrappedPromise;
|
|
object.getProperty("name", (error, result, wasThrown) => {
|
|
InspectorTest.assert(!error, "Should not have a protocol error.");
|
|
|
|
InspectorTest.expectFalse(wasThrown, "Should not have a thrown exception.");
|
|
InspectorTest.expectThat(result.hasValue(), "Fetched property should have a primitive value.");
|
|
InspectorTest.expectEqual(result.value, "Favorites", "Fetched property value should be as expected.");
|
|
error ? finished.reject(error) : finished.resolve();
|
|
});
|
|
|
|
await finished.promise;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.getProperty.SuccessWithCallback.Number",
|
|
async test() {
|
|
let finished = new WI.WrappedPromise;
|
|
object.getProperty(1, (error, result, wasThrown) => {
|
|
InspectorTest.assert(!error, "Should not have a protocol error.");
|
|
|
|
InspectorTest.expectFalse(wasThrown, "Should not have a thrown exception.");
|
|
InspectorTest.expectThat(result.hasValue(), "Fetched property should have a primitive value.");
|
|
InspectorTest.expectEqual(result.value, true, "Fetched property value should be as expected.");
|
|
error ? finished.reject(error) : finished.resolve();
|
|
});
|
|
|
|
await finished.promise;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.getProperty.NotFoundWithCallback",
|
|
async test() {
|
|
let finished = new WI.WrappedPromise;
|
|
object.getProperty("doesNotExist", (error, result, wasThrown) => {
|
|
InspectorTest.assert(!error, "Should not have a protocol error.");
|
|
|
|
InspectorTest.expectFalse(wasThrown, "Should not have a thrown exception.");
|
|
InspectorTest.expectThat(result.hasValue(), "Fetched property should have a primitive value.");
|
|
InspectorTest.expectEqual(result.value, undefined, "Fetched property value should be as expected.");
|
|
error ? finished.reject(error) : finished.resolve();
|
|
});
|
|
|
|
await finished.promise;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.getProperty.FailureWithCallback",
|
|
async test() {
|
|
let finished = new WI.WrappedPromise;
|
|
object.getProperty({}, (error, result, wasThrown) => {
|
|
InspectorTest.assert(!error, "Should not have a protocol error.");
|
|
|
|
InspectorTest.expectThat(wasThrown, "Should have a thrown exception.");
|
|
InspectorTest.expectFalse(result.hasValue(), "Fetched property should not have a primitive value.");
|
|
InspectorTest.expectEqual(result.type, "object", "Fetched property value should have type `object`.");
|
|
InspectorTest.expectEqual(result.subtype, "error", "Fetched property value should have subtype `error`.");
|
|
|
|
error ? finished.reject(error) : finished.resolve();
|
|
});
|
|
|
|
await finished.promise;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.getProperty.SuccessWithPromise.String",
|
|
async test() {
|
|
let result = await object.getProperty("name");
|
|
InspectorTest.expectThat(result.hasValue(), "Fetched property should have a primitive value.");
|
|
InspectorTest.expectEqual(result.value, "Favorites", "Fetched property value should be as expected.");
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.getProperty.SuccessWithPromise.Number",
|
|
async test() {
|
|
let result = await object.getProperty(1);
|
|
InspectorTest.expectThat(result.hasValue(), "Fetched property should have a primitive value.");
|
|
InspectorTest.expectEqual(result.value, true, "Fetched property value should be as expected.");
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.getProperty.FailureWithPromise",
|
|
async test() {
|
|
await InspectorTest.expectException(async () => {
|
|
await object.getProperty({});
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.fetchProperties.Success",
|
|
async test() {
|
|
let keys = ["name", "size", "data"];
|
|
let result = await object.fetchProperties(keys);
|
|
|
|
InspectorTest.expectEqual(Object.keys(result).length, 3, "Result object should contain three keys.");
|
|
for (let key of keys)
|
|
InspectorTest.expectThat(key in result, `Result object should contain fetched property '${key}'.`);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.fetchProperties.SuccessWithDuplicateKey",
|
|
async test() {
|
|
let keys = ["name", "size", "data", "data"];
|
|
let result = await object.fetchProperties(keys);
|
|
|
|
InspectorTest.expectEqual(Object.keys(result).length, 3, "Result object should contain three keys.");
|
|
for (let key of new Set(keys))
|
|
InspectorTest.expectThat(key in result, `Result object should contain fetched property '${key}'.`);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.fetchProperties.SuccessWithOutputObject",
|
|
async test() {
|
|
let resultObject = {"existingKey": true};
|
|
let keys = ["name", "size", "data"];
|
|
let returnValue = await object.fetchProperties(keys, resultObject);
|
|
InspectorTest.expectEqual(returnValue, resultObject, "Resolved value should be the passed-in result object.");
|
|
for (let key of keys)
|
|
InspectorTest.expectThat(key in resultObject, `Result object should contain fetched property '${key}'.`);
|
|
|
|
let {name, size, data} = returnValue;
|
|
InspectorTest.expectEqual(name, "Favorites", `Fetched property 'name' should equal 'Favorites'.`);
|
|
InspectorTest.expectEqual(size, 456, `Fetched property 'size' should equal '456'.`);
|
|
InspectorTest.expectThat(data instanceof WI.RemoteObject, `Fetched property 'data' should be a WI.RemoteObject.`);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "RemoteObject.fetchProperties.FailureWithInvalidKey",
|
|
async test() {
|
|
let keys = ["name", "size", {}];
|
|
await InspectorTest.expectException(async () => {
|
|
await object.fetchProperties(keys);
|
|
});
|
|
}
|
|
});
|
|
|
|
InspectorTest.evaluateInPage(`window.testObject`).then((result) => {
|
|
object = result;
|
|
InspectorTest.assert(object instanceof WI.RemoteObject, "Should get a remote object.");
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}).catch(reportUnhandledRejection);
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Testing basic API and convenience methods of RemoteObject.</p>
|
|
</body>
|
|
</html> |