You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

FixedSizeQueueTests.cs 2.2 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using LLama.Common;
  2. namespace LLama.Unittest;
  3. public class FixedSizeQueueTests
  4. {
  5. [Fact]
  6. public void Create()
  7. {
  8. var q = new FixedSizeQueue<int>(7);
  9. Assert.Equal(7, q.Capacity);
  10. Assert.Empty(q);
  11. }
  12. [Fact]
  13. public void CreateFromItems()
  14. {
  15. var q = new FixedSizeQueue<int>(7, new [] { 1, 2, 3 });
  16. Assert.Equal(7, q.Capacity);
  17. Assert.Equal(3, q.Count);
  18. Assert.True(q.ToArray().SequenceEqual(new[] { 1, 2, 3 }));
  19. }
  20. [Fact]
  21. public void Indexing()
  22. {
  23. var q = new FixedSizeQueue<int>(7, new[] { 1, 2, 3 });
  24. Assert.Equal(1, q[0]);
  25. Assert.Equal(2, q[1]);
  26. Assert.Equal(3, q[2]);
  27. Assert.Throws<ArgumentOutOfRangeException>(() => q[3]);
  28. }
  29. [Fact]
  30. public void CreateFromFullItems()
  31. {
  32. var q = new FixedSizeQueue<int>(3, new[] { 1, 2, 3 });
  33. Assert.Equal(3, q.Capacity);
  34. Assert.Equal(3, q.Count);
  35. Assert.True(q.ToArray().SequenceEqual(new[] { 1, 2, 3 }));
  36. }
  37. [Fact]
  38. public void CreateFromTooManyItems()
  39. {
  40. Assert.Throws<ArgumentException>(() => new FixedSizeQueue<int>(2, new[] { 1, 2, 3 }));
  41. }
  42. [Fact]
  43. public void CreateFromTooManyItemsNonCountable()
  44. {
  45. Assert.Throws<ArgumentException>(() => new FixedSizeQueue<int>(2, Items()));
  46. return;
  47. static IEnumerable<int> Items()
  48. {
  49. yield return 1;
  50. yield return 2;
  51. yield return 3;
  52. }
  53. }
  54. [Fact]
  55. public void Enqueue()
  56. {
  57. var q = new FixedSizeQueue<int>(7, new[] { 1, 2, 3 });
  58. q.Enqueue(4);
  59. q.Enqueue(5);
  60. Assert.Equal(7, q.Capacity);
  61. Assert.Equal(5, q.Count);
  62. Assert.True(q.ToArray().SequenceEqual(new[] { 1, 2, 3, 4, 5 }));
  63. }
  64. [Fact]
  65. public void EnqueueOverflow()
  66. {
  67. var q = new FixedSizeQueue<int>(5, new[] { 1, 2, 3 });
  68. q.Enqueue(4);
  69. q.Enqueue(5);
  70. q.Enqueue(6);
  71. q.Enqueue(7);
  72. Assert.Equal(5, q.Capacity);
  73. Assert.Equal(5, q.Count);
  74. Assert.True(q.ToArray().SequenceEqual(new[] { 3, 4, 5, 6, 7 }));
  75. }
  76. }