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

// @dart = 2.9

/// @assertion abstract Iterable map(f(E element))
/// As long as the returned Iterable is not iterated over, the supplied function
/// f will not be invoked.
/// @description Checks that the supplied function [f] will not be invoked if the
/// returned [Iterable] is not iterated over.
/// @author kaigorodov


import "dart:collection";
import "../../../Utils/expect.dart";

bool invoked = false;

f(var element) {
  invoked = true;
  return element;
}
  
main() {
  DoubleLinkedQueue queue = new DoubleLinkedQueue();
  queue.map(f);
  queue.add(22);
  queue.map(f);
  queue.add(11);
  queue.map(f);
  queue.add(11);
  queue.map(f);
  for (int k = -100; k < 200; k++) {
    queue.add(k);
  }
  queue.map(f);
  Expect.isFalse(invoked);
}
