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

/**
 * @assertionIterable expand(Iterable f(E element))
 * Expands each element of this [Iterable] into zero or more elements.
 * The resulting [Iterable] runs through the elements returned by [f] for each
 * element of this, in iteration order.
 * @description Checks that the function [f] is called for every element of the
 * list.
 * @author kaigorodov
 */
import "dart:collection";
import "../../../Utils/expect.dart";
import "LinkedList.lib.dart";

void checkCount(List a0) {
  LinkedList<MyLinkedListEntry> a = toLinkedList(a0);
  int count = 0;
  Iterable expanded = a.expand((MyLinkedListEntry element) {
    Expect.equals(a0[count], element.value);
    count++;
    return [element];
  });
  Expect.equals(a0.length, expanded.length);
}

main() {
  List a = [];
  checkCount(a);
  a.add(22);
  checkCount(a);
  a.add(11);
  checkCount(a);
  a.add(11);
  checkCount(a);
}
