mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 18:16:04 +00:00
[ddc] Refactor NSM error tests
Change-Id: Id88b6809736320b6ae098f40f16ced218649a385 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/297181 Reviewed-by: Mark Zhou <markzipan@google.com> Commit-Queue: Nicholas Shahan <nshahan@google.com>
This commit is contained in:
parent
58e48de282
commit
9d0781bd9b
|
@ -2,7 +2,9 @@
|
|||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import "utils.dart";
|
||||
import 'package:expect/minitest.dart';
|
||||
|
||||
import 'utils.dart';
|
||||
|
||||
class A {
|
||||
int x = 42;
|
||||
|
@ -17,71 +19,85 @@ String arity1(int val) {
|
|||
return val.toString();
|
||||
}
|
||||
|
||||
dynamic dynamicFunction = arity1;
|
||||
|
||||
void main() {
|
||||
dynamic instanceOfA = A();
|
||||
// Call an instance of a class with no call() method.
|
||||
try {
|
||||
instanceOfA();
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'call'", message);
|
||||
expectStringContains("Receiver: Instance of 'A'", message);
|
||||
}
|
||||
group('Dynamic call of', () {
|
||||
dynamic instanceOfA = A();
|
||||
test('instance of a class with no `call()` method', () {
|
||||
try {
|
||||
instanceOfA();
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'call'", message);
|
||||
expectStringContains("Receiver: Instance of 'A'", message);
|
||||
}
|
||||
});
|
||||
group('class instance', () {
|
||||
group('method tearoff', () {
|
||||
dynamic tearoff = instanceOfA.arity1;
|
||||
test('passing too many arguments', () {
|
||||
try {
|
||||
tearoff(1, 2);
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'bound arity1'", message);
|
||||
expectStringContains('too many arguments', message);
|
||||
}
|
||||
});
|
||||
test('passing too few arguments', () {
|
||||
try {
|
||||
tearoff();
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'bound arity1'", message);
|
||||
expectStringContains('too few arguments', message);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
group('top level function tearoff', () {
|
||||
dynamic dynamicFunction = arity1;
|
||||
test('passing too many arguments', () {
|
||||
try {
|
||||
dynamicFunction(1, 2);
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'arity1'", message);
|
||||
expectStringContains('too many arguments', message);
|
||||
}
|
||||
});
|
||||
test('passing too few arguments', () {
|
||||
try {
|
||||
dynamicFunction();
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'arity1'", message);
|
||||
expectStringContains('too few arguments', message);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
dynamic tearOff = instanceOfA.arity1;
|
||||
// Dynamic call of a class method with too many arguments.
|
||||
try {
|
||||
tearOff(1, 2);
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'bound arity1'", message);
|
||||
expectStringContains("too many arguments", message);
|
||||
}
|
||||
|
||||
// Dynamic call of a class method with too few arguments.
|
||||
try {
|
||||
tearOff();
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'bound arity1'", message);
|
||||
expectStringContains("too few arguments", message);
|
||||
}
|
||||
|
||||
// Dynamic call of a top level function with too many arguments.
|
||||
try {
|
||||
dynamicFunction(1, 2);
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'arity1'", message);
|
||||
expectStringContains("too many arguments", message);
|
||||
}
|
||||
|
||||
// Dynamic call of a top level function with too few arguments.
|
||||
try {
|
||||
dynamicFunction();
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'arity1'", message);
|
||||
expectStringContains("too few arguments", message);
|
||||
}
|
||||
|
||||
// Function.apply() with too many arguments.
|
||||
try {
|
||||
Function.apply(dynamicFunction, [1, 2]);
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'arity1'", message);
|
||||
expectStringContains("too many arguments", message);
|
||||
}
|
||||
|
||||
// Function.apply() with too few arguments.
|
||||
try {
|
||||
Function.apply(dynamicFunction, []);
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'arity1'", message);
|
||||
expectStringContains("too few arguments", message);
|
||||
}
|
||||
group('`Function.apply()`', () {
|
||||
dynamic dynamicFunction = arity1;
|
||||
group('top level function tearoff', () {
|
||||
test('passing too many arguments', () {
|
||||
try {
|
||||
Function.apply(dynamicFunction, [1, 2]);
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'arity1'", message);
|
||||
expectStringContains('too many arguments', message);
|
||||
}
|
||||
});
|
||||
test('passing too few arguments', () {
|
||||
try {
|
||||
Function.apply(dynamicFunction, []);
|
||||
} on NoSuchMethodError catch (error) {
|
||||
var message = error.toString();
|
||||
expectStringContains("NoSuchMethodError: 'arity1'", message);
|
||||
expectStringContains('too few arguments', message);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue