// 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 final bool isEmpty
/// Returns [true] if there is no element in this collection.
/// @description Checks that method returns [true] only if queue is empty.
/// @author kaigorodov

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

main() {
  DoubleLinkedQueue list = new DoubleLinkedQueue();
  
  Expect.isTrue(list.isEmpty);
  
  list.addLast(1);
  Expect.isFalse(list.isEmpty);
  Expect.isFalse(list.isEmpty);
  Expect.isFalse(list.isEmpty);
  
  list.addFirst(1);
  Expect.isFalse(list.isEmpty);
  
  list.removeFirst();
  Expect.isFalse(list.isEmpty);
  list.removeFirst();
  Expect.isTrue(list.isEmpty);
  Expect.isTrue(list.isEmpty);
}
