// Copyright (c) 2011, 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 Stream<T> distinct([bool equals(T previous, T next)])
///    Skips data events if they are equal to the previous data event.
///    The returned stream provides the same events as this stream, except that it
/// never provides two consecutive data events that are equal.
/// @description Checks that errors thrown by [equals] are added to the returned
/// stream.
/// @issue #29627
/// @author a.semenov@unipro.ru

library distinct_A05_t01;
import "../../../Utils/expect.dart";

void test(CreateStreamFunction create) {
  AsyncExpect.events([], [], create([]).distinct((p, n) => throw "error"));
  AsyncExpect.events([1], ["a","a"], create([1,2,3]).distinct((p, n) => throw "a"));
  AsyncExpect.events(
      [1,2,4], // data
      [3,5],  // errors
      create([1,2,3,4,5]).distinct((p, n) => n.isOdd ? throw n : p==n)
  );
}
