// Copyright (c) 2016, 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.

/// @assertion EventSync abstract class
///
/// @description Runner for ll members of EventSync
/// @note Run by ../StreamSink/StreamSink_inherited_tests.lib.dart
/// @author ngl@unipro.ru

library all_tests_eventsink;
import "dart:async";

import "EventSink_A01_t01.test.dart" as EventSink_A01_t01;
import "hashCode_A01_t01.test.dart" as hashCode_A01_t01;
import "runtimeType_A01_t01.test.dart" as runtimeType_A01_t01;
import "equality_operator_A01_t01.test.dart" as equality_operator_A01_t01;
import "add_A01_t01.test.dart" as add_A01_t01;
import "addError_A01_t01.test.dart" as addError_A01_t01;
import "close_A01_t01.test.dart" as close_A01_t01;
import "noSuchMethodError_A01_t01.test.dart" as noSuchMethodError_A01_t01;
import "toString_A01_t01.test.dart" as toString_A01_t01;

test(EventSink create()) {
  EventSink_A01_t01.test(create);
  hashCode_A01_t01.test(create);
  runtimeType_A01_t01.test(create);
  equality_operator_A01_t01.test(create);
  add_A01_t01.test(create);
  addError_A01_t01.test(create);
  close_A01_t01.test(create);
  noSuchMethodError_A01_t01.test(create);
  toString_A01_t01.test(create);
}
