[package:js] Test optional default value arguments in extensions

Change-Id: Ia28d53bfca87dab143701ce0099a16580fdc14b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221560
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Commit-Queue: Riley Porter <rileyporter@google.com>
This commit is contained in:
Riley Porter
2021-11-30 04:45:04 +00:00
committed by Commit Bot
parent b735151bbc
commit fc560bab9e
2 changed files with 46 additions and 0 deletions
@@ -35,6 +35,7 @@ extension FooExt on Foo {
external set annotatedSetter(_);
external num getField();
external void setField10([optionalArgument = 10]);
@JS('toString')
external String extToString();
external dynamic getFirstEl(list);
@@ -72,6 +73,10 @@ void main() {
return this.field;
}
Foo.prototype.setField10 = function(optionalArgument) {
this.field = optionalArgument;
}
Foo.prototype.getFirstEl = function(list) {
return list[0];
}
@@ -128,6 +133,24 @@ void main() {
expect(foo.otherSumFn(10, 5), equals(15));
});
// TODO(41375): Remove if JS interop default value arguments are disallowed.
test('optional arguments', () {
var foo = Foo(42);
expect(foo.field, equals(42));
foo.setField10();
expect(foo.field, equals(10));
foo.setField10(6);
expect(foo.field, equals(6));
// Test using tearoffs
var setF = foo.setField10;
setF();
expect(foo.field, equals(10));
setF(6);
expect(foo.field, equals(6));
});
test('module class', () {
var bar = Bar(5);
expect(js_util.getProperty(bar, 'fieldAnnotation'), equals(5));
@@ -32,6 +32,7 @@ extension FooExt on Foo {
external set annotatedSetter(_);
external num getField();
external void setField10([optionalArgument = 10]);
@JS('toString')
external String extToString();
external dynamic getFirstEl(list);
@@ -71,6 +72,10 @@ void main() {
return this.field;
}
Foo.prototype.setField10 = function(optionalArgument) {
this.field = optionalArgument;
}
Foo.prototype.getFirstEl = function(list) {
return list[0];
}
@@ -110,6 +115,24 @@ void main() {
expect(foo.otherSumFn(10, 5), equals(15));
});
// TODO(41375): Remove if JS interop default value arguments are disallowed.
test('optional arguments', () {
var foo = Foo(42);
expect(foo.getField(), equals(42));
foo.setField10();
expect(foo.getField(), equals(10));
foo.setField10(6);
expect(foo.getField(), equals(6));
// Test using tearoffs
var setF = foo.setField10;
setF();
expect(foo.getField(), equals(10));
setF(6);
expect(foo.getField(), equals(6));
});
test('module class', () {
var bar = Bar(5);
expect(js_util.getProperty(bar, 'fieldAnnotation'), equals(5));