1
0

Buffer.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. using System;
  5. using System.Linq;
  6. using Xunit;
  7. namespace Tests
  8. {
  9. public class Buffer : Tests
  10. {
  11. [Fact]
  12. public void Buffer_Arguments()
  13. {
  14. AssertThrows<ArgumentNullException>(() => EnumerableEx.Buffer<int>(null, 5));
  15. AssertThrows<ArgumentNullException>(() => EnumerableEx.Buffer<int>(null, 5, 3));
  16. AssertThrows<ArgumentOutOfRangeException>(() => EnumerableEx.Buffer<int>([1], 0));
  17. AssertThrows<ArgumentOutOfRangeException>(() => EnumerableEx.Buffer<int>([1], 5, 0));
  18. AssertThrows<ArgumentOutOfRangeException>(() => EnumerableEx.Buffer<int>([1], 0, 3));
  19. }
  20. [Fact]
  21. public void Buffer1()
  22. {
  23. var rng = Enumerable.Range(0, 10);
  24. var res = rng.Buffer(3).ToList();
  25. Assert.Equal(4, res.Count);
  26. Assert.True(res[0].SequenceEqual([0, 1, 2]));
  27. Assert.True(res[1].SequenceEqual([3, 4, 5]));
  28. Assert.True(res[2].SequenceEqual([6, 7, 8]));
  29. Assert.True(res[3].SequenceEqual([9]));
  30. }
  31. [Fact]
  32. public void Buffer2()
  33. {
  34. var rng = Enumerable.Range(0, 10);
  35. var res = rng.Buffer(5).ToList();
  36. Assert.Equal(2, res.Count);
  37. Assert.True(res[0].SequenceEqual([0, 1, 2, 3, 4]));
  38. Assert.True(res[1].SequenceEqual([5, 6, 7, 8, 9]));
  39. }
  40. [Fact]
  41. public void Buffer3()
  42. {
  43. var rng = Enumerable.Empty<int>();
  44. var res = rng.Buffer(5).ToList();
  45. Assert.Empty(res);
  46. }
  47. [Fact]
  48. public void Buffer4()
  49. {
  50. var rng = Enumerable.Range(0, 10);
  51. var res = rng.Buffer(3, 2).ToList();
  52. Assert.Equal(5, res.Count);
  53. Assert.True(res[0].SequenceEqual([0, 1, 2]));
  54. Assert.True(res[1].SequenceEqual([2, 3, 4]));
  55. Assert.True(res[2].SequenceEqual([4, 5, 6]));
  56. Assert.True(res[3].SequenceEqual([6, 7, 8]));
  57. Assert.True(res[4].SequenceEqual([8, 9]));
  58. }
  59. [Fact]
  60. public void Buffer5()
  61. {
  62. var rng = Enumerable.Range(0, 10);
  63. var res = rng.Buffer(3, 4).ToList();
  64. Assert.Equal(3, res.Count);
  65. Assert.True(res[0].SequenceEqual([0, 1, 2]));
  66. Assert.True(res[1].SequenceEqual([4, 5, 6]));
  67. Assert.True(res[2].SequenceEqual([8, 9]));
  68. }
  69. }
  70. }