yakforward-ou / yak_packages

a collection of packages for Flutter
MIT License
12 stars 0 forks source link

[test] IterableNullaryToResultNullaryX test failing #236

Closed iapicca closed 2 months ago

iapicca commented 7 months ago
melos run test
melos run test
  └> melos exec -c 1 \
     --fail-fast \
     -- \
     melos run test:flutter && \
     melos run test:dart
     └> RUNNING

Select a package to run the test script:

1) * [Default - Press Enter]
2) byte_token
3) stub
4) yak_flutter
5) yak_result
6) yak_runner
7) yak_test
8) yak_tween
9) yak_utils

✔ Enter your choice 6
$ melos exec
  └> melos run test:flutter
     └> RUNNING (in 1 packages)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
yak_runner:
melos run test:flutter
  └> melos exec -- flutter test
     └> RUNNING

NoPackageFoundScriptException: No package found that matches with the filters defined in the melos.yaml for script test:flutter.
Run a script by name defined in the workspace melos.yaml config file.

Usage: melos run <name>
-h, --help         Print this usage information.
    --no-select    Skips the prompt to select a package (if defined in the script configuration). Filters defined in the script's "packageFilters" options will however still
                   be applied.

Run "melos help" to see global options.
yak_runner: SUCCESS
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

$ melos exec
  └> melos run test:flutter
     └> SUCCESS
melos run test:dart
  └> melos exec -- dart test
     └> RUNNING

$ melos exec
  └> dart test
     └> RUNNING (in 1 packages)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
yak_runner:
00:00 +0: loading test/runner/value/run_unary_test.dart                                                                                                                       00:00 +0: test/runner/value/run_unary_test.dart: unaryRun GIVEN Nullary does not throw WHEN ResultUnary.call THEN return Success                                              00:00 +1: test/runner/value/run_unary_test.dart: unaryRun GIVEN Nullary does not throw WHEN ResultUnary.call THEN return Success                                              00:00 +2: test/runner/value/run_unary_test.dart: unaryRun GIVEN Nullary does not throw WHEN ResultUnary.call THEN return Success                                              00:00 +3: test/runner/value/run_nullary_test.dart: nullaryRun GIVEN Nullary does not throw WHEN ResultNullary.call THEN return Success                                        00:00 +4: test/runner/value/run_nullary_test.dart: nullaryRun GIVEN Nullary does not throw WHEN ResultNullary.call THEN return Success                                        00:00 +5: test/runner/value/run_nullary_test.dart: nullaryRun GIVEN Nullary does not throw WHEN ResultNullary.call THEN return Success                                        00:00 +6: test/runner/value/run_nullary_test.dart: nullaryRun GIVEN Nullary does not throw WHEN ResultNullary.call THEN return Success                                        00:00 +7: test/runner/value/run_nullary_async_test.dart: nullaryRunAsync GIVEN Nullary throws Exception WHEN ResultNullaryAsync.call THEN return Failure                      00:00 +8: test/runner/value/run_nullary_async_test.dart: nullaryRunAsync GIVEN Nullary throws Exception WHEN ResultNullaryAsync.call THEN return Failure                      00:00 +9: test/runner/value/run_unary_test.dart: unaryRun GIVEN Nullary throws Exception WHEN ResultUnary.call THEN return Failure                                            00:00 +10: test/runner/value/run_unary_test.dart: unaryRun GIVEN Nullary throws Exception WHEN ResultUnary.call THEN return Failure                                           00:00 +11: test/runner/value/run_nullary_test.dart: nullaryRun GIVEN Nullary throws Exception WHEN ResultNullary.call THEN return Failure                                     00:00 +12: test/runner/value/run_nullary_test.dart: nullaryRun GIVEN Nullary throws Exception WHEN ResultNullary.call THEN return Failure                                     00:00 +12: loading test/runner/void/run_unary_test.dart                                                                                                                       00:00 +12: test/runner/void/run_unary_test.dart: unaryRunVoid<int,int> GIVEN Nullary does not throw WHEN VoidResultUnary.call THEN return Success                             00:00 +13: test/runner/void/run_nullary_test.dart: nullaryRunVoid<int> GIVEN Nullary does not throw WHEN VoidVoidResultNullary.call THEN return Success                       00:00 +14: test/runner/void/run_nullary_test.dart: nullaryRunVoid<int> GIVEN Nullary does not throw WHEN VoidVoidResultNullary.call THEN return Success                       00:00 +15: test/runner/void/run_nullary_test.dart: nullaryRunVoid<int> GIVEN Nullary does not throw WHEN VoidVoidResultNullary.call THEN return Success                       00:00 +16: test/runner/void/run_nullary_async_test.dart: nullaryRunVoidAsync<int> GIVEN Nullary does not throw WHEN VoidResultNullaryAsync.call THEN return Success           00:00 +17: test/runner/void/run_nullary_async_test.dart: nullaryRunVoidAsync<int> GIVEN Nullary does not throw WHEN VoidResultNullaryAsync.call THEN return Success           00:00 +18: test/runner/void/run_nullary_async_test.dart: nullaryRunVoidAsync<int> GIVEN Nullary does not throw WHEN VoidResultNullaryAsync.call THEN return Success           00:00 +19: test/runner/void/run_unary_async_test.dart: unaryRunVoidAsync<int,int> GIVEN unary does not throw WHEN VoidResultUnaryAsync.call THEN return Success               00:00 +20: test/runner/void/run_unary_async_test.dart: unaryRunVoidAsync<int,int> GIVEN unary does not throw WHEN VoidResultUnaryAsync.call THEN return Success               00:00 +21: test/runner/void/run_unary_async_test.dart: unaryRunVoidAsync<int,int> GIVEN unary does not throw WHEN VoidResultUnaryAsync.call THEN return Success               00:00 +22: test/runner/void/run_unary_async_test.dart: unaryRunVoidAsync<int,int> GIVEN unary does not throw WHEN VoidResultUnaryAsync.call THEN return Success               00:00 +22: test/runner/void/run_unary_async_test.dart: unaryRunVoidAsync<int,int> GIVEN unary throws Exception WHEN VoidResultUnaryAsync.call THEN return Failure             00:00 +23: test/runner/void/run_unary_async_test.dart: unaryRunVoidAsync<int,int> GIVEN unary throws Exception WHEN VoidResultUnaryAsync.call THEN return Failure             00:00 +24: test/runner/void/run_unary_async_test.dart: unaryRunVoidAsync<int,int> GIVEN unary throws Exception WHEN VoidResultUnaryAsync.call THEN return Failure             00:00 +24: loading test/extensions/run_test.dart                                                                                                                              00:00 +24: test/extensions/run_test.dart: ResultNullaryX run GIVEN a Nullary function WHEN nullary.run THEN returns a ResultNullary                                           00:00 +25: test/extensions/run_test.dart: ResultNullaryX run GIVEN a Nullary function WHEN nullary.run THEN returns a ResultNullary                                           00:00 +25: loading test/extensions/then_run_test.dart                                                                                                                         00:00 +25: test/extensions/then_run_test.dart: ThenRunUnaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                      00:00 +26: test/extensions/then_run_test.dart: ThenRunUnaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                      00:00 +27: test/extensions/then_run_test.dart: ThenRunUnaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                      00:00 +28: test/extensions/then_run_test.dart: ThenRunUnaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                      00:00 +29: test/extensions/then_run_test.dart: ThenRunUnaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                      00:00 +30: test/extensions/then_run_test.dart: ThenRunUnaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                      00:00 +31: test/extensions/then_run_test.dart: ThenRunUnaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                      00:00 +32: test/extensions/then_run_test.dart: ThenRunUnaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                      00:00 +33: test/extensions/let_run_test.dart: ValueResultLetRunX letRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                   00:00 +34: test/extensions/let_run_test.dart: ValueResultLetRunX letRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                   00:00 +35: test/extensions/let_run_test.dart: ValueResultLetRunX letRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                   00:00 +36: test/extensions/let_run_test.dart: ValueResultLetRunX letRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                   00:00 +37: test/extensions/let_run_test.dart: ValueResultLetRunX letRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                   00:00 +38: test/extensions/let_run_test.dart: ValueResultLetRunX letRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                   00:00 +39: test/extensions/let_run_test.dart: ValueResultLetRunX letRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                   00:00 +40: test/extensions/then_run_test.dart: ThenRunUnaryX thenRunVoid Failure GIVEN Result is Failure WHEN function throws THEN result is Failure                          00:00 +41: test/extensions/let_run_test.dart: ValueResultLetRunX letRun Success GIVEN Result is Success WHEN function throws THEN result is Failure                           00:00 +42: test/extensions/then_run_test.dart: ThenRunNullaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                    00:00 +43: test/extensions/then_run_test.dart: ThenRunNullaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                    00:00 +44: test/extensions/then_run_test.dart: ThenRunNullaryX thenRun Success GIVEN Result is Success WHEN function does not throw THEN result is Success                    00:00 +44: test/extensions/let_run_test.dart: ValueResultLetRunX letRun Failure GIVEN Result is Failure WHEN function throws THEN result is Failure                           00:00 +45: test/extensions/then_run_test.dart: ThenRunNullaryX thenRun Success GIVEN Result is Success WHEN function throws THEN result is Failure                            00:00 +46: test/extensions/let_run_test.dart: ValueResultLetRunX thenRunVoid Success GIVEN Result is Success WHEN function does not throw THEN result is Success              00:00 +47: test/extensions/let_run_test.dart: ValueResultLetRunX thenRunVoid Success GIVEN Result is Success WHEN function does not throw THEN result is Success              00:00 +48: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +49: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +50: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +51: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +52: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +53: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +54: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +55: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +56: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +57: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +58: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNul00:00 +58 -1: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNullary<int>> [E]
  Expected: <Instance of 'Iterable<() => ValueResult<int>>'>
    Actual: <Closure: () => ValueResult<List<() => int>>>
     Which: is not an instance of 'Iterable<() => ValueResult<int>>'
  Type should be predictable

  package:matcher                              expect
  test/extensions/iterable_run_test.dart 16:9  main.<fn>.<fn>.<fn>

To run this test again: dart test test/extensions/iterable_run_test.dart -p vm --plain-name 'IterableNullaryToResultNullaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.run THEN returns a Iterable<ResultNullary<int>>'
00:00 +58 -1: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX runVoid GIVEN a tester List<Nullary<int> WHEN tester.call.runVoid THEN returns a Iterabl00:00 +58 -2: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryX runVoid GIVEN a tester List<Nullary<int> WHEN tester.call.runVoid THEN returns a Iterable<VoidResultNullary> [E]
  Expected: <Instance of 'Iterable<() => VoidResult<void>>'>
    Actual: <Closure: () => VoidResult<void>>
     Which: is not an instance of 'Iterable<() => VoidResult<void>>'
  Type should be predictable

  package:matcher                              expect
  test/extensions/iterable_run_test.dart 31:9  main.<fn>.<fn>.<fn>

To run this test again: dart test test/extensions/iterable_run_test.dart -p vm --plain-name 'IterableNullaryToResultNullaryX runVoid GIVEN a tester List<Nullary<int> WHEN tester.call.runVoid THEN returns a Iterable<VoidResultNullary>'
00:00 +58 -2: test/extensions/iterable_run_test.dart: IterableUnaryToResultUnaryX run GIVEN a tester List<Nullary<T> WHEN tester.call.run THEN returns a Iterable<ResultUnary<00:00 +58 -3: test/extensions/iterable_run_test.dart: IterableUnaryToResultUnaryX run GIVEN a tester List<Nullary<T> WHEN tester.call.run THEN returns a Iterable<ResultUnary<T, S>> [E]
  Expected: <Instance of 'Iterable<(int) => ValueResult<int>>'>
    Actual: <Closure: () => ValueResult<List<(int) => int>>>
     Which: is not an instance of 'Iterable<(int) => ValueResult<int>>'
  Type should be predictable

  package:matcher                              expect
  test/extensions/iterable_run_test.dart 50:9  main.<fn>.<fn>.<fn>

To run this test again: dart test test/extensions/iterable_run_test.dart -p vm --plain-name 'IterableUnaryToResultUnaryX run GIVEN a tester List<Nullary<T> WHEN tester.call.run THEN returns a Iterable<ResultUnary<T, S>>'
00:00 +58 -3: test/extensions/iterable_run_test.dart: IterableUnaryToResultUnaryX runVoid GIVEN a tester List<Nullary<int> WHEN tester.call.runVoid THEN returns a Iterable<Vo00:00 +58 -4: test/extensions/iterable_run_test.dart: IterableUnaryToResultUnaryX runVoid GIVEN a tester List<Nullary<int> WHEN tester.call.runVoid THEN returns a Iterable<VoidResultUnary<S>> [E]
  Expected: <Instance of 'Iterable<(int) => VoidResult<void>>'>
    Actual: <Closure: () => VoidResult<void>>
     Which: is not an instance of 'Iterable<(int) => VoidResult<void>>'
  Type should be predictable

  package:matcher                              expect
  test/extensions/iterable_run_test.dart 65:9  main.<fn>.<fn>.<fn>

To run this test again: dart test test/extensions/iterable_run_test.dart -p vm --plain-name 'IterableUnaryToResultUnaryX runVoid GIVEN a tester List<Nullary<int> WHEN tester.call.runVoid THEN returns a Iterable<VoidResultUnary<S>>'
00:00 +58 -4: test/extensions/iterable_run_test.dart: ... run GIVEN a tester Iterable<NullaryAsync<T> WHEN tester.call.runAsync THEN returns a  Iterable<ResultNullaryAsync<T>00:00 +58 -5: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryAsyncX run GIVEN a tester Iterable<NullaryAsync<T> WHEN tester.call.runAsync THEN returns a  Iterable<ResultNullaryAsync<T>> [E]
  Expected: <Instance of 'Iterable<() => FutureOr<ValueResult<int>>>'>
    Actual: <Closure: () => Future<ValueResult<List<() => Future<int>>>>>
     Which: is not an instance of 'Iterable<() => FutureOr<ValueResult<int>>>'
  Type should be predictable

  package:matcher                              expect
  test/extensions/iterable_run_test.dart 84:9  main.<fn>.<fn>.<fn>

To run this test again: dart test test/extensions/iterable_run_test.dart -p vm --plain-name 'IterableNullaryToResultNullaryAsyncX run GIVEN a tester Iterable<NullaryAsync<T> WHEN tester.call.runAsync THEN returns a  Iterable<ResultNullaryAsync<T>>'
00:00 +58 -5: test/extensions/iterable_run_test.dart: ... runVoid GIVEN a tester List<NullaryAsync<int>> WHEN tester.call.runVoidAsync THEN returns a Iterable<VoidResultNulla00:00 +58 -6: test/extensions/iterable_run_test.dart: IterableNullaryToResultNullaryAsyncX runVoid GIVEN a tester List<NullaryAsync<int>> WHEN tester.call.runVoidAsync THEN returns a Iterable<VoidResultNullaryAsync> [E]
  Expected: <Instance of 'Iterable<() => FutureOr<VoidResult<void>>>'>
    Actual: <Closure: () => Future<VoidResult<void>>>
     Which: is not an instance of 'Iterable<() => FutureOr<VoidResult<void>>>'
  Type should be predictable

  package:matcher                              expect
  test/extensions/iterable_run_test.dart 99:9  main.<fn>.<fn>.<fn>

To run this test again: dart test test/extensions/iterable_run_test.dart -p vm --plain-name 'IterableNullaryToResultNullaryAsyncX runVoid GIVEN a tester List<NullaryAsync<int>> WHEN tester.call.runVoidAsync THEN returns a Iterable<VoidResultNullaryAsync>'
00:00 +58 -6: test/extensions/iterable_run_test.dart: ... run GIVEN a tester Iterable<UnaryFutureOr<T, S>> WHEN tester.call.runAsync THEN returns a Iterable<ResultUnaryAsync<00:00 +58 -7: test/extensions/iterable_run_test.dart: group IterableUnaryToResultUnaryX run GIVEN a tester Iterable<UnaryFutureOr<T, S>> WHEN tester.call.runAsync THEN returns a Iterable<ResultUnaryAsync<T, S>> [E]
  Expected: <Instance of 'Iterable<(int) => FutureOr<ValueResult<int>>>'>
    Actual: <Closure: () => Future<ValueResult<List<(int) => FutureOr<int>>>>>
     Which: is not an instance of 'Iterable<(int) => FutureOr<ValueResult<int>>>'
  Type should be predictable

  package:matcher                               expect
  test/extensions/iterable_run_test.dart 119:9  main.<fn>.<fn>.<fn>

To run this test again: dart test test/extensions/iterable_run_test.dart -p vm --plain-name 'group IterableUnaryToResultUnaryX run GIVEN a tester Iterable<UnaryFutureOr<T, S>> WHEN tester.call.runAsync THEN returns a Iterable<ResultUnaryAsync<T, S>>'
00:00 +58 -7: test/extensions/iterable_run_test.dart: group IterableUnaryToResultUnaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.runVoid THEN returns aIterable<V00:00 +58 -8: test/extensions/iterable_run_test.dart: group IterableUnaryToResultUnaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.runVoid THEN returns aIterable<VoidResultUnaryAsync<S>> [E]
  Expected: <Instance of 'Iterable<(int) => FutureOr<VoidResult<void>>>'>
    Actual: <Closure: () => Future<VoidResult<void>>>
     Which: is not an instance of 'Iterable<(int) => FutureOr<VoidResult<void>>>'
  Type should be predictable

  package:matcher                               expect
  test/extensions/iterable_run_test.dart 134:9  main.<fn>.<fn>.<fn>

To run this test again: dart test test/extensions/iterable_run_test.dart -p vm --plain-name 'group IterableUnaryToResultUnaryX run GIVEN a tester List<Nullary<int> WHEN tester.call.runVoid THEN returns aIterable<VoidResultUnaryAsync<S>>'
00:00 +58 -8: Some tests failed.                                                                                                                                              

Consider enabling the flag chain-stack-traces to receive more detailed exceptions.
For example, 'dart test --chain-stack-traces'.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

$ melos exec
  └> dart test
     └> FAILED (in 1 packages)
        └> yak_runner (with exit code 1)

melos run test:dart
  └> melos exec -- dart test
     └> FAILED
ERROR: ScriptException: The script test:dart failed to execute.

melos run test
  └> melos exec -c 1 \
     --fail-fast \
     -- \
     melos run test:flutter && \
     melos run test:dart
     └> FAILED
ScriptException: The script test failed to execute.
iapicca commented 7 months ago
import 'package:stub/stub.dart';
import 'package:test/test.dart';
import 'package:yak_runner/yak_runner.dart';

void main() {
  group('IterableNullaryToResultNullaryX', () {
    group('run', () {
      final tester = Stub.nullary<List<Nullary<int>>>()..stub = () => [];

      setUp(tester.reset);

      test(
          'GIVEN a tester List<Nullary<int> '
          'WHEN tester().run '
          'THEN returns a Iterable<ResultNullary<int>>', () {
        expect(
          tester().run,
          isA<Iterable<ResultNullary<int>>>(),
          reason: 'Type should be predictable',
        );
      });
    });
    group('runVoid', () {
      final tester = Stub.nullary<List<Nullary<int>>>()..stub = () => [];

      setUp(tester.reset);
      test(
          'GIVEN a tester List<Nullary<int> '
          'WHEN tester().runVoid '
          'THEN returns a Iterable<VoidResultNullary>', () {
        expect(
          tester().runVoid,
          isA<Iterable<VoidResultNullary>>(),
          reason: 'Type should be predictable',
        );
      });
    });
  });

  group('IterableUnaryToResultUnaryX', () {
    group('run', () {
      final tester = Stub.nullary<List<Unary<int, int>>>()..stub = () => [];

      setUp(tester.reset);

      test(
          'GIVEN a tester List<Nullary<T> '
          'WHEN tester().run '
          'THEN returns a Iterable<ResultUnary<T, S>>', () {
        expect(
          tester().run,
          isA<Iterable<ResultUnary<int, int>>>(),
          reason: 'Type should be predictable',
        );
      });
    });
    group('runVoid', () {
      final tester = Stub.nullary<List<Unary<int, int>>>()..stub = () => [];

      setUp(tester.reset);
      test(
          'GIVEN a tester List<Nullary<int> '
          'WHEN tester().runVoid '
          'THEN returns a Iterable<VoidResultUnary<S>>', () {
        expect(
          tester().runVoid,
          isA<Iterable<VoidResultUnary<int>>>(),
          reason: 'Type should be predictable',
        );
      });
    });
  });

  group('IterableNullaryToResultNullaryAsyncX', () {
    group('run', () {
      final tester = Stub.nullary<List<NullaryAsync<int>>>()..stub = () => [];

      setUp(tester.reset);

      test(
          'GIVEN a tester Iterable<NullaryAsync<T> '
          'WHEN tester().runAsync '
          'THEN returns a  Iterable<ResultNullaryAsync<T>>', () {
        expect(
          tester().runAsync,
          isA<Iterable<ResultNullaryAsync<int>>>(),
          reason: 'Type should be predictable',
        );
      });
    });
    group('runVoid', () {
      final tester = Stub.nullary<List<NullaryAsync<int>>>()..stub = () => [];

      setUp(tester.reset);
      test(
          'GIVEN a tester List<NullaryAsync<int>> '
          'WHEN tester().runVoidAsync '
          'THEN returns a Iterable<VoidResultNullaryAsync>', () {
        expect(
          tester().runVoidAsync,
          isA<Iterable<VoidResultNullaryAsync>>(),
          reason: 'Type should be predictable',
        );
      });
    });
  });

  group('group IterableUnaryToResultUnaryX', () {
    group('run', () {
      final tester = Stub.nullary<List<UnaryFutureOr<int, int>>>()
        ..stub = () => [];

      setUp(tester.reset);

      test(
          'GIVEN a tester Iterable<UnaryFutureOr<T, S>> '
          'WHEN tester().runAsync '
          'THEN returns a Iterable<ResultUnaryAsync<T, S>>', () {
        expect(
          tester().runAsync,
          isA<Iterable<ResultUnaryAsync<int, int>>>(),
          reason: 'Type should be predictable',
        );
      });
    });
    group('run', () {
      final tester = Stub.nullary<List<Unary<int, int>>>()..stub = () => [];

      setUp(tester.reset);
      test(
          'GIVEN a tester List<Nullary<int> '
          'WHEN tester().runVoid '
          'THEN returns aIterable<VoidResultUnaryAsync<S>>', () {
        expect(
          () => tester().runVoidAsync,
          isA<Iterable<VoidResultUnaryAsync<int>>>(),
          reason: 'Type should be predictable',
        );
      });
    });
  });
}