Пример #1
0
        public void CanImplementISeqWithImmutableCollection()
        {
            var seq = new ImmutableListSeq <int>(ImmutableList.Create(1, 2, 3));

            Assert.That(seq, Is.EqualTo(new[] { 1, 2, 3 }));

            seq.Conj(4);
            Assert.That(seq, Is.EqualTo(new[] { 1, 2, 3, 4 }));

            var item = seq.Take();

            Assert.That(seq, Is.EqualTo(new[] { 2, 3, 4 }));
            Assert.That(item, Is.EqualTo(1));
        }
Пример #2
0
        public void AsAsyncWorksOnImmutableCollectionBasedISeq()
        {
            var innerSeq = new ImmutableListSeq <int>(ImmutableList.Create(1, 2, 3));
            var asyncSeq = innerSeq.AsAsync();

            asyncSeq.Conj(4);
            Assert.That(asyncSeq, Is.EqualTo(new[] { 1, 2, 3, 4 }));

            var item = asyncSeq.Take();

            Assert.That(item, Is.EqualTo(1));
            Assert.That(asyncSeq, Is.EqualTo(new[] { 2, 3, 4 }));

            var conjTask = asyncSeq.ConjAsync(5, CancellationToken.None);

            Assert.That(conjTask.Status, Is.EqualTo(TaskStatus.RanToCompletion));
            Assert.That(asyncSeq, Is.EqualTo(new[] { 2, 3, 4, 5 }));

            var takeTask = asyncSeq.TakeAsync(CancellationToken.None);

            Assert.That(takeTask.Status, Is.EqualTo(TaskStatus.RanToCompletion));
            Assert.That(takeTask.Result, Is.EqualTo(2));
            Assert.That(asyncSeq, Is.EqualTo(new[] { 3, 4, 5 }));
        }