// 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.

// @dart = 2.9

/// @assertion  int hashCode
/// Get a hash code for this object.
///
/// All objects have hash codes. Hash codes are guaranteed to be the same for
/// objects that are equal when compared using the equality operator ==. Other
/// than that there are no guarantees about the hash codes. They will not be
/// consistent between runs and there are no distribution guarantees.
///
/// @description Checks usage of hashCode property.
/// @author ngl@unipro.ru

library hashCode_A01_t01;
import "dart:async";
import "../../../Utils/expect.dart";

test(StreamConsumer create()) {
  StreamConsumer sc1 = create();
  StreamConsumer sc2 = create();
  StreamConsumer sc3 = sc1;

  if (sc1 == sc2) {
    Expect.isTrue(sc1.hashCode == sc2.hashCode);
  } else {
    Expect.isFalse(sc1.hashCode == sc2.hashCode);
  }
  if (sc1 == sc3) {
    Expect.isTrue(sc1.hashCode == sc3.hashCode);
  } else {
    Expect.isFalse(sc1.hashCode == sc3.hashCode);
  }
}

