Skip to content

Commit

Permalink
Bug 1913399 [wpt PR 47634] - webnn: add some missing WPT tests to cov…
Browse files Browse the repository at this point in the history
…er the label, a=testonly

Automatic update from web-platform-tests
webnn: add some missing WPT tests to cover the label

This CL adds some missing WPT tests such as `validateUnaryOperation` and
`validateSingleInputOperation`.

Bug: 354513206
Change-Id: Ic921927e955893768719a982564377bc3f352cbf
Cq-Include-Trybots: luci.chromium.try​:win11-blink-rel,mac14.arm64-blink-rel,mac14-blink-rel, linux-blink-rel
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5789217
Reviewed-by: Austin Sullivan <[email protected]>
Reviewed-by: ningxin hu <[email protected]>
Commit-Queue: Lisha Guo <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1342608}

--

wpt-commits: 6487c9c61df05991760da7810d8d931a2af93f6e
wpt-pr: 47634
  • Loading branch information
lisa0314 authored and moz-wptsync-bot committed Aug 20, 2024
1 parent 7a0d35f commit db77955
Show file tree
Hide file tree
Showing 15 changed files with 31 additions and 31 deletions.
13 changes: 8 additions & 5 deletions testing/web-platform/tests/webnn/resources/utils_validation.js
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ function assert_throws_with_label(func, regrexp) {
}
}

function validateTwoInputsBroadcastable(operationName, label, regrexp) {
function validateTwoInputsBroadcastable(operationName, label) {
if (navigator.ml === undefined) {
return;
}
Expand All @@ -240,6 +240,7 @@ function validateTwoInputsBroadcastable(operationName, label, regrexp) {
const inputB = builder.input(`inputB${++inputBIndex}`, {dataType, dimensions: unbroadcastableDimensions});
assert_equals(typeof builder[operationName], 'function');
const options = {label};
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
() => builder[operationName](inputA, inputB, options), regrexp);
assert_throws_with_label(
Expand All @@ -251,7 +252,7 @@ function validateTwoInputsBroadcastable(operationName, label, regrexp) {
}, `[${operationName}] TypeError is expected if two inputs aren't broadcastable`);
}

function validateTwoInputsOfSameDataType(operationName, label, regrexp) {
function validateTwoInputsOfSameDataType(operationName, label) {
if (navigator.ml === undefined) {
return;
}
Expand Down Expand Up @@ -288,6 +289,7 @@ function validateTwoInputsOfSameDataType(operationName, label, regrexp) {
if (dataType !== dataTypeB) {
const inputB = builder.input(`inputB${++inputBIndex}`, {dataType: dataTypeB, dimensions});
const options = {label};
const regrexp = new RegExp('\\[' + label + '\\]');
assert_equals(typeof builder[subOperationName], 'function');
assert_throws_with_label(
() => builder[subOperationName](inputA, inputB, options),
Expand Down Expand Up @@ -423,8 +425,7 @@ function validateOptionsAxes(operationName) {
* @param {Array} supportedDataTypes - Test building with these data types
* succeeds and test building with all other data types fails
*/
function validateUnaryOperation(
operationName, supportedDataTypes, label, regrexp) {
function validateUnaryOperation(operationName, supportedDataTypes, label) {
promise_test(async t => {
const builder = new MLGraphBuilder(context);
for (let dataType of supportedDataTypes) {
Expand Down Expand Up @@ -461,6 +462,7 @@ function validateUnaryOperation(
const input = builder.input(`input`, {dataType, dimensions});
assert_equals(typeof builder[operationName], 'function');
const options = {label};
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
() => builder[operationName](input, options), regrexp);
}
Expand All @@ -472,7 +474,7 @@ function validateUnaryOperation(
* Validate a single input operation
* @param {String} operationName - An operation name
*/
function validateSingleInputOperation(operationName, label, regrexp) {
function validateSingleInputOperation(operationName, label) {
promise_test(async t => {
const builder = new MLGraphBuilder(context);
const supportedDataTypes =
Expand Down Expand Up @@ -508,6 +510,7 @@ function validateSingleInputOperation(operationName, label, regrexp) {
const input = builder.input(`input`, {dataType, dimensions});
assert_equals(typeof builder[operationName], 'function');
const options = {label};
const regrexp = new RegExp('\\[' + label + '\\]');
assert_throws_with_label(
() => builder[operationName](input, options), regrexp);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@

validateInputFromAnotherBuilder('clamp');

validateUnaryOperation('clamp', allWebNNOperandDataTypes);
const label = '123_clamp';

validateUnaryOperation('clamp', allWebNNOperandDataTypes, label);

promise_test(async t => {
const builder = new MLGraphBuilder(context);
Expand Down Expand Up @@ -45,7 +47,6 @@ promise_test(async t => {
assert_array_equals(output.shape(), [1, 2, 3, 4]);
}, '[clamp] Build with options.minValue == options.maxValue');

const label = '123_clamp';
promise_test(async t => {
const builder = new MLGraphBuilder(context);
const options = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@ function runElementWiseBinaryTests(operatorName, tests) {
}

kElementwiseBinaryOperators.forEach((operatorName) => {
validateTwoInputsOfSameDataType(operatorName, label, regrexp);
validateTwoInputsBroadcastable(operatorName, label, regrexp);
validateTwoInputsOfSameDataType(operatorName, label);
validateTwoInputsBroadcastable(operatorName, label);
validateTwoInputsFromMultipleBuilders(operatorName);
runElementWiseBinaryTests(operatorName, tests);
});
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@ const kElementwiseLogicalBinaryOperators = [
];

const label = 'elementwise_logic_op';
const regrexp = new RegExp('\\[' + label + '\\]');

kElementwiseLogicalBinaryOperators.forEach((operatorName) => {
validateTwoInputsOfSameDataType(operatorName, label, regrexp);
validateTwoInputsOfSameDataType(operatorName, label);
validateTwoInputsFromMultipleBuilders(operatorName);
validateTwoInputsBroadcastable(operatorName, label, regrexp);
validateTwoInputsBroadcastable(operatorName, label);
});

// The `logicalNot()` operator is unary.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ kElementwiseUnaryOperators.forEach((operatorName) => {
});

const label = 'elementwise_unary_op';
const regrexp = new RegExp('\\[' + label + '\\]');
kElementwiseUnaryOperators.forEach((operatorName) => {
validateSingleInputOperation(operatorName, label, regrexp);
validateSingleInputOperation(operatorName, label);
});
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@

validateInputFromAnotherBuilder('elu');

validateSingleInputOperation('elu');

const label = 'elu_xxx';
const regrexp = new RegExp('\\[' + label + '\\]');

validateSingleInputOperation('elu', label);

promise_test(async t => {
const builder = new MLGraphBuilder(context);
const options = {alpha: 1.0};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@

validateInputFromAnotherBuilder('hardSigmoid');

validateUnaryOperation('hardSigmoid', floatingPointTypes);
const label = 'hard_sigmoid';

validateUnaryOperation('hardSigmoid', floatingPointTypes, label);

promise_test(async t => {
const builder = new MLGraphBuilder(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@
validateInputFromAnotherBuilder('hardSwish');

const label = 'hard_swish';
const regrexp = new RegExp('\\[' + label + '\\]');
validateUnaryOperation('hardSwish', floatingPointTypes, label, regrexp);
validateUnaryOperation('hardSwish', floatingPointTypes, label);
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@

validateInputFromAnotherBuilder('leakyRelu');

validateSingleInputOperation('leakyRelu');
const label = 'leaky_relu';
validateSingleInputOperation('leakyRelu', label);

promise_test(async t => {
const builder = new MLGraphBuilder(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@

validateInputFromAnotherBuilder('linear');

validateUnaryOperation('linear', floatingPointTypes);
const label = 'linear_xxx';
validateUnaryOperation('linear', floatingPointTypes, label);

promise_test(async t => {
const builder = new MLGraphBuilder(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@
validateInputFromAnotherBuilder('relu');

const label = 'relu_1';
const regrexp = new RegExp('\\[' + label + '\\]');
validateSingleInputOperation('relu', label, regrexp);
validateSingleInputOperation('relu', label);
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@
validateInputFromAnotherBuilder('sigmoid');

const label = 'sigmoid_xxx';
const regrexp = new RegExp('\\[' + label + '\\]');
validateSingleInputOperation('sigmoid', label, regrexp);
validateSingleInputOperation('sigmoid', label);
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@
validateInputFromAnotherBuilder('softplus');

const label = 'softplus_xxx';
const regrexp = new RegExp('\\[' + label + '\\]');
validateSingleInputOperation('softplus', label, regrexp);
validateSingleInputOperation('softplus', label);
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@
validateInputFromAnotherBuilder('softsign');

const label = 'softsign_xxx';
const regrexp = new RegExp('\\[' + label + '\\]');
validateSingleInputOperation('softsign', label, regrexp);
validateSingleInputOperation('softsign', label);
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@
validateInputFromAnotherBuilder('tanh');

const label = 'tanh-xxx';
const regrexp = new RegExp('\\[' + label + '\\]');
validateUnaryOperation('tanh', floatingPointTypes, label, regrexp);
validateUnaryOperation('tanh', floatingPointTypes, label);

0 comments on commit db77955

Please sign in to comment.