BufferTest.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the Apache 2.0 License.
  3. // See the LICENSE file in the project root for more information.
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using System.Linq;
  8. using Xunit;
  9. namespace Tests
  10. {
  11. public class BufferTest : Tests
  12. {
  13. [Fact]
  14. public void Buffer_Arguments()
  15. {
  16. AssertThrows<ArgumentNullException>(() => EnumerableEx.Buffer<int>(null, 5));
  17. AssertThrows<ArgumentNullException>(() => EnumerableEx.Buffer<int>(null, 5, 3));
  18. AssertThrows<ArgumentOutOfRangeException>(() => EnumerableEx.Buffer<int>(new[] { 1 }, 0));
  19. AssertThrows<ArgumentOutOfRangeException>(() => EnumerableEx.Buffer<int>(new[] { 1 }, 5, 0));
  20. AssertThrows<ArgumentOutOfRangeException>(() => EnumerableEx.Buffer<int>(new[] { 1 }, 0, 3));
  21. }
  22. [Fact]
  23. public void Buffer1()
  24. {
  25. var rng = Enumerable.Range(0, 10);
  26. var res = rng.Buffer(3).ToList();
  27. Assert.Equal(4, res.Count);
  28. Assert.True(res[0].SequenceEqual(new[] { 0, 1, 2 }));
  29. Assert.True(res[1].SequenceEqual(new[] { 3, 4, 5 }));
  30. Assert.True(res[2].SequenceEqual(new[] { 6, 7, 8 }));
  31. Assert.True(res[3].SequenceEqual(new[] { 9 }));
  32. }
  33. [Fact]
  34. public void Buffer2()
  35. {
  36. var rng = Enumerable.Range(0, 10);
  37. var res = rng.Buffer(5).ToList();
  38. Assert.Equal(2, res.Count);
  39. Assert.True(res[0].SequenceEqual(new[] { 0, 1, 2, 3, 4 }));
  40. Assert.True(res[1].SequenceEqual(new[] { 5, 6, 7, 8, 9 }));
  41. }
  42. [Fact]
  43. public void Buffer3()
  44. {
  45. var rng = Enumerable.Empty<int>();
  46. var res = rng.Buffer(5).ToList();
  47. Assert.Empty(res);
  48. }
  49. [Fact]
  50. public void Buffer4()
  51. {
  52. var rng = Enumerable.Range(0, 10);
  53. var res = rng.Buffer(3, 2).ToList();
  54. Assert.Equal(5, res.Count);
  55. Assert.True(res[0].SequenceEqual(new[] { 0, 1, 2 }));
  56. Assert.True(res[1].SequenceEqual(new[] { 2, 3, 4 }));
  57. Assert.True(res[2].SequenceEqual(new[] { 4, 5, 6 }));
  58. Assert.True(res[3].SequenceEqual(new[] { 6, 7, 8 }));
  59. Assert.True(res[4].SequenceEqual(new[] { 8, 9 }));
  60. }
  61. [Fact]
  62. public void Buffer5()
  63. {
  64. var rng = Enumerable.Range(0, 10);
  65. var res = rng.Buffer(3, 4).ToList();
  66. Assert.Equal(3, res.Count);
  67. Assert.True(res[0].SequenceEqual(new[] { 0, 1, 2 }));
  68. Assert.True(res[1].SequenceEqual(new[] { 4, 5, 6 }));
  69. Assert.True(res[2].SequenceEqual(new[] { 8, 9 }));
  70. }
  71. }
  72. }