| // Copyright 2020 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| import 'package:test/test.dart'; | |
| import 'queries/index.dart'; | |
| import 'reflect.dart'; | |
| import 'types.dart'; | |
| // ignore_for_file: avoid_as | |
| class Foo extends Query { | |
| @override | |
| void addReport(Report report) {} | |
| @override | |
| QueryReport distill() { | |
| throw UnimplementedError(); | |
| } | |
| @override | |
| void mergeWith(Iterable<Query> others) {} | |
| @override | |
| String getDescription() { | |
| throw UnimplementedError(); | |
| } | |
| } | |
| class FooOneIntArg extends Foo { | |
| FooOneIntArg({int a = 42}) : _a = a; | |
| final int _a; | |
| } | |
| class FooOneStringArg extends Foo { | |
| FooOneStringArg({String s = '42'}) : _s = s; | |
| final String _s; | |
| } | |
| class FooBoolStringArg extends Foo { | |
| FooBoolStringArg({bool b = false, String s = '42'}) | |
| : _b = b, | |
| _s = s; | |
| final bool _b; | |
| final String _s; | |
| } | |
| void main() { | |
| group('ReflectQuery', () { | |
| test('Construct Foo()', () { | |
| final result = ReflectQuery.instantiate( | |
| const QueryFactory(Foo, ''), <String, String>{}); | |
| expect(result, isA<Foo>()); | |
| }); | |
| test('Construct FooOneIntArg(a: 100)', () { | |
| final result = ReflectQuery.instantiate( | |
| const QueryFactory(FooOneIntArg, ''), <String, String>{'a': '100'}); | |
| expect(result, isA<FooOneIntArg>()); | |
| expect((result as FooOneIntArg)._a, equals(100)); | |
| }); | |
| test('Construct FooOneStringArg(s: 100)', () { | |
| final result = ReflectQuery.instantiate( | |
| const QueryFactory(FooOneStringArg, ''), | |
| <String, String>{'s': '100'}); | |
| expect(result, isA<FooOneStringArg>()); | |
| expect((result as FooOneStringArg)._s, equals('100')); | |
| }); | |
| test('Construct FooBoolStringArg(b: false, s: 100)', () { | |
| final result = ReflectQuery.instantiate( | |
| const QueryFactory(FooBoolStringArg, ''), | |
| <String, String>{'b': 'true'}); | |
| expect(result, isA<FooBoolStringArg>()); | |
| expect((result as FooBoolStringArg)._b, equals(true)); | |
| expect((result as FooBoolStringArg)._s, equals('42')); | |
| }); | |
| }); | |
| } |