From dd8db567e9744346351746efed60de640fbc7249 Mon Sep 17 00:00:00 2001 From: Paul Louth Date: Wed, 20 Oct 2021 15:53:16 +0100 Subject: [PATCH] Unit tests for new Seq constructors --- .../Immutable Collections/Seq/SeqLoan.cs | 2 +- .../Collections/Prelude_Collections.cs | 3 +- LanguageExt.Tests/CollectionToStringTests.cs | 6 +- LanguageExt.Tests/SeqTests.cs | 137 ++++++++++++++++++ 4 files changed, 142 insertions(+), 6 deletions(-) diff --git a/LanguageExt.Core/DataTypes/Immutable Collections/Seq/SeqLoan.cs b/LanguageExt.Core/DataTypes/Immutable Collections/Seq/SeqLoan.cs index 6a07c8399..42c35cd56 100644 --- a/LanguageExt.Core/DataTypes/Immutable Collections/Seq/SeqLoan.cs +++ b/LanguageExt.Core/DataTypes/Immutable Collections/Seq/SeqLoan.cs @@ -114,7 +114,7 @@ public Seq ToSeq() { if(freed == 1) return Seq.Empty; var ndata = new A[data.Length]; - Buffer.BlockCopy(data, start, ndata, start, count); + System.Array.Copy(data, start, ndata, start, count); return new Seq(new SeqStrict(ndata, start, count, 0, 0)); } diff --git a/LanguageExt.Core/Prelude/Collections/Prelude_Collections.cs b/LanguageExt.Core/Prelude/Collections/Prelude_Collections.cs index e7efe4d2e..740477aa6 100644 --- a/LanguageExt.Core/Prelude/Collections/Prelude_Collections.cs +++ b/LanguageExt.Core/Prelude/Collections/Prelude_Collections.cs @@ -1086,9 +1086,8 @@ public static Seq Seq(A a, A b, A c, A d, A e, A f, A g, A h, params A[] t arr[9] = f; arr[10] = g; arr[11] = h; - return new Seq(new SeqStrict(arr, 4, 8, 0, 0)); - Buffer.BlockCopy(tail, 0, arr, 12, tail.Length); + System.Array.Copy(tail, 0, arr, 12, tail.Length); return new Seq(new SeqStrict(arr, 4, 8 + tail.Length, 0, 0)); } diff --git a/LanguageExt.Tests/CollectionToStringTests.cs b/LanguageExt.Tests/CollectionToStringTests.cs index 1f36d2ccd..eae72d9ae 100644 --- a/LanguageExt.Tests/CollectionToStringTests.cs +++ b/LanguageExt.Tests/CollectionToStringTests.cs @@ -63,21 +63,21 @@ public void LstLongToString() [Fact] public void SeqShortToString() { - var items = Seq(zeroToFour); + var items = toSeq(zeroToFour); Assert.True(items.ToString() == zeroToFourString); } [Fact] public void SeqMedToString() { - var items = Seq(zeroToFourtyNine); + var items = toSeq(zeroToFourtyNine); Assert.True(items.ToString() == zeroToFourtyNineString); } [Fact] public void SeqLongToString() { - var items = Seq(zeroToFiftyNine); + var items = toSeq(zeroToFiftyNine); Assert.True(items.ToString() == zeroToFiftyNineString); } diff --git a/LanguageExt.Tests/SeqTests.cs b/LanguageExt.Tests/SeqTests.cs index 048869bb0..f3a2beffe 100644 --- a/LanguageExt.Tests/SeqTests.cs +++ b/LanguageExt.Tests/SeqTests.cs @@ -418,5 +418,142 @@ public void SeqConcatTest() .Concat(seq2) .Concat(seq3)); } + + [Fact] + public void CheckItems() + { + var xs = Seq(); + Assert.True(xs.Count == 0); + + xs = Seq(0); + Assert.True(xs.Count == 1); + Assert.True(xs[0] == 0); + + xs = Seq(0, 1); + Assert.True(xs.Count == 2); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + + xs = Seq(0, 1, 2); + Assert.True(xs.Count == 3); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + + xs = Seq(0, 1, 2, 3); + Assert.True(xs.Count == 4); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + + xs = Seq(0, 1, 2, 3, 4); + Assert.True(xs.Count == 5); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + Assert.True(xs[4] == 4); + + xs = Seq(0, 1, 2, 3, 4, 5); + Assert.True(xs.Count == 6); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + Assert.True(xs[4] == 4); + Assert.True(xs[5] == 5); + + xs = Seq(0, 1, 2, 3, 4, 5, 6); + Assert.True(xs.Count == 7); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + Assert.True(xs[4] == 4); + Assert.True(xs[5] == 5); + Assert.True(xs[6] == 6); + + xs = Seq(0, 1, 2, 3, 4, 5, 6, 7); + Assert.True(xs.Count == 8); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + Assert.True(xs[4] == 4); + Assert.True(xs[5] == 5); + Assert.True(xs[6] == 6); + Assert.True(xs[7] == 7); + + xs = Seq(0, 1, 2, 3, 4, 5, 6, 7, 8); + Assert.True(xs.Count == 9); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + Assert.True(xs[4] == 4); + Assert.True(xs[5] == 5); + Assert.True(xs[6] == 6); + Assert.True(xs[7] == 7); + Assert.True(xs[8] == 8); + + xs = Seq(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); + Assert.True(xs.Count == 10); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + Assert.True(xs[4] == 4); + Assert.True(xs[5] == 5); + Assert.True(xs[6] == 6); + Assert.True(xs[7] == 7); + Assert.True(xs[8] == 8); + Assert.True(xs[9] == 9); + + xs = Seq(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); + Assert.True(xs.Count == 11); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + Assert.True(xs[4] == 4); + Assert.True(xs[5] == 5); + Assert.True(xs[6] == 6); + Assert.True(xs[7] == 7); + Assert.True(xs[8] == 8); + Assert.True(xs[9] == 9); + Assert.True(xs[10] == 10); + + xs = Seq(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11); + Assert.True(xs.Count == 12); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + Assert.True(xs[4] == 4); + Assert.True(xs[5] == 5); + Assert.True(xs[6] == 6); + Assert.True(xs[7] == 7); + Assert.True(xs[8] == 8); + Assert.True(xs[9] == 9); + Assert.True(xs[10] == 10); + Assert.True(xs[11] == 11); + + xs = Seq(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); + Assert.True(xs.Count == 13); + Assert.True(xs[0] == 0); + Assert.True(xs[1] == 1); + Assert.True(xs[2] == 2); + Assert.True(xs[3] == 3); + Assert.True(xs[4] == 4); + Assert.True(xs[5] == 5); + Assert.True(xs[6] == 6); + Assert.True(xs[7] == 7); + Assert.True(xs[8] == 8); + Assert.True(xs[9] == 9); + Assert.True(xs[10] == 10); + Assert.True(xs[11] == 11); + Assert.True(xs[12] == 12); + } } }