| // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file |
| // 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 'dart:mirrors'; |
| |
| import 'package:expect/expect.dart'; |
| import 'stringify.dart'; |
| |
| const X = 'X'; |
| const Y = 'Y'; |
| const Z = 'Z'; |
| |
| class C { |
| positional1(u, v, w, [@X int x = 1, @Y int y = 2, @Z int z = 3]) {} |
| positional2(u, v, w, [@Y int y = 1, @Z int z = 2, @X int x = 3]) {} |
| positional3(u, v, w, [@Z int z = 1, @X int x = 2, @Y int y = 3]) {} |
| |
| named1(u, v, w, {@X int x: 1, @Y int y: 2, @Z int z: 3}) {} |
| named2(u, v, w, {@Y int y: 1, @Z int z: 2, @X int x: 3}) {} |
| named3(u, v, w, {@Z int z: 1, @X int x: 2, @Y int y: 3}) {} |
| } |
| |
| testPositional() { |
| ClassMirror cm = reflectClass(C); |
| |
| MethodMirror positional1 = cm.declarations[#positional1] as MethodMirror; |
| expect('Method(s(positional1) in s(C))', positional1); |
| expect( |
| 'Parameter(s(x) in s(positional1), optional, value = Instance(value = 1), type = Class(s(int) in s(dart.core), top-level))', |
| positional1.parameters[3]); |
| expect( |
| 'Parameter(s(y) in s(positional1), optional, value = Instance(value = 2), type = Class(s(int) in s(dart.core), top-level))', |
| positional1.parameters[4]); |
| expect( |
| 'Parameter(s(z) in s(positional1), optional, value = Instance(value = 3), type = Class(s(int) in s(dart.core), top-level))', |
| positional1.parameters[5]); |
| |
| MethodMirror positional2 = cm.declarations[#positional2] as MethodMirror; |
| expect('Method(s(positional2) in s(C))', positional2); |
| expect( |
| 'Parameter(s(y) in s(positional2), optional, value = Instance(value = 1), type = Class(s(int) in s(dart.core), top-level))', |
| positional2.parameters[3]); |
| expect( |
| 'Parameter(s(z) in s(positional2), optional, value = Instance(value = 2), type = Class(s(int) in s(dart.core), top-level))', |
| positional2.parameters[4]); |
| expect( |
| 'Parameter(s(x) in s(positional2), optional, value = Instance(value = 3), type = Class(s(int) in s(dart.core), top-level))', |
| positional2.parameters[5]); |
| |
| MethodMirror positional3 = cm.declarations[#positional3] as MethodMirror; |
| expect('Method(s(positional3) in s(C))', positional3); |
| expect( |
| 'Parameter(s(z) in s(positional3), optional, value = Instance(value = 1), type = Class(s(int) in s(dart.core), top-level))', |
| positional3.parameters[3]); |
| expect( |
| 'Parameter(s(x) in s(positional3), optional, value = Instance(value = 2), type = Class(s(int) in s(dart.core), top-level))', |
| positional3.parameters[4]); |
| expect( |
| 'Parameter(s(y) in s(positional3), optional, value = Instance(value = 3), type = Class(s(int) in s(dart.core), top-level))', |
| positional3.parameters[5]); |
| } |
| |
| testNamed() { |
| ClassMirror cm = reflectClass(C); |
| |
| MethodMirror named1 = cm.declarations[#named1] as MethodMirror; |
| expect('Method(s(named1) in s(C))', named1); |
| expect( |
| 'Parameter(s(x) in s(named1), optional, named, value = Instance(value = 1), type = Class(s(int) in s(dart.core), top-level))', |
| named1.parameters[3]); |
| expect( |
| 'Parameter(s(y) in s(named1), optional, named, value = Instance(value = 2), type = Class(s(int) in s(dart.core), top-level))', |
| named1.parameters[4]); |
| expect( |
| 'Parameter(s(z) in s(named1), optional, named, value = Instance(value = 3), type = Class(s(int) in s(dart.core), top-level))', |
| named1.parameters[5]); |
| |
| MethodMirror named2 = cm.declarations[#named2] as MethodMirror; |
| expect('Method(s(named2) in s(C))', named2); |
| expect( |
| 'Parameter(s(y) in s(named2), optional, named, value = Instance(value = 1), type = Class(s(int) in s(dart.core), top-level))', |
| named2.parameters[3]); |
| expect( |
| 'Parameter(s(z) in s(named2), optional, named, value = Instance(value = 2), type = Class(s(int) in s(dart.core), top-level))', |
| named2.parameters[4]); |
| expect( |
| 'Parameter(s(x) in s(named2), optional, named, value = Instance(value = 3), type = Class(s(int) in s(dart.core), top-level))', |
| named2.parameters[5]); |
| |
| MethodMirror named3 = cm.declarations[#named3] as MethodMirror; |
| expect('Method(s(named3) in s(C))', named3); |
| expect( |
| 'Parameter(s(z) in s(named3), optional, named, value = Instance(value = 1), type = Class(s(int) in s(dart.core), top-level))', |
| named3.parameters[3]); |
| expect( |
| 'Parameter(s(x) in s(named3), optional, named, value = Instance(value = 2), type = Class(s(int) in s(dart.core), top-level))', |
| named3.parameters[4]); |
| expect( |
| 'Parameter(s(y) in s(named3), optional, named, value = Instance(value = 3), type = Class(s(int) in s(dart.core), top-level))', |
| named3.parameters[5]); |
| } |
| |
| main() { |
| testPositional(); |
| testNamed(); |
| } |