1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 using System.Collections.Generic;
6 using System.Linq;
7 using Xunit;
8 
9 namespace System.Collections.Tests
10 {
11     public abstract partial class Queue_Generic_Tests<T> : IGenericSharedAPI_Tests<T>
12     {
13         [Theory]
14         [MemberData(nameof(ValidCollectionSizes))]
Queue_Generic_TryDequeue_AllElements(int count)15         public void Queue_Generic_TryDequeue_AllElements(int count)
16         {
17             Queue<T> queue = GenericQueueFactory(count);
18             List<T> elements = queue.ToList();
19             foreach (T element in elements)
20             {
21                 T result;
22                 Assert.True(queue.TryDequeue(out result));
23                 Assert.Equal(element, result);
24             }
25         }
26 
27         [Fact]
Queue_Generic_TryDequeue_EmptyQueue_ReturnsFalse()28         public void Queue_Generic_TryDequeue_EmptyQueue_ReturnsFalse()
29         {
30             T result;
31             Assert.False(new Queue<T>().TryDequeue(out result));
32             Assert.Equal(default(T), result);
33         }
34 
35         [Theory]
36         [MemberData(nameof(ValidCollectionSizes))]
Queue_Generic_TryPeek_AllElements(int count)37         public void Queue_Generic_TryPeek_AllElements(int count)
38         {
39             Queue<T> queue = GenericQueueFactory(count);
40             List<T> elements = queue.ToList();
41             foreach (T element in elements)
42             {
43                 T result;
44                 Assert.True(queue.TryPeek(out result));
45                 Assert.Equal(element, result);
46 
47                 queue.Dequeue();
48             }
49         }
50 
51         [Fact]
Queue_Generic_TryPeek_EmptyQueue_ReturnsFalse()52         public void Queue_Generic_TryPeek_EmptyQueue_ReturnsFalse()
53         {
54             T result;
55             Assert.False(new Queue<T>().TryPeek(out result));
56             Assert.Equal(default(T), result);
57         }
58     }
59 }
60