public void FiniteYielderExtensionTake()
        {
            var yielder = Yielder.NaturalNumber().Skip(1).Map(v => v * v).Take(6);
            var taken   = yielder.Take(5);

            Assert.Equal(1, taken.Next());
            Assert.Equal(4, taken.Next());
            Assert.Equal(9, taken.Next());
            Assert.Equal(16, taken.Next());
            Assert.True(taken.HasNext());
            Assert.Equal(25, taken.Next());
            Assert.False(taken.HasNext());
            Assert.False(taken.HasNext());

            yielder = Yielder.NaturalNumber().Skip(1).Map(v => v * v).Take(6);
            taken   = yielder.Take(7);

            Assert.Equal(1, taken.Next());
            Assert.Equal(4, taken.Next());
            Assert.Equal(9, taken.Next());
            Assert.Equal(16, taken.Next());
            Assert.Equal(25, taken.Next());
            Assert.True(taken.HasNext());
            Assert.Equal(36, taken.Next());
            Assert.False(taken.HasNext());
            Assert.False(taken.HasNext());
        }
示例#2
0
        public void YielderExtensionFilterAndMap()
        {
            var yielder  = Yielder.NaturalNumber().Map(v => v * 2 + 3);
            var selected = yielder.Filter(v => v % 3 < 2).Map(v => v + 4);

            Assert.Equal(7, selected.Next());
            Assert.Equal(11, selected.Next());
            Assert.Equal(13, selected.Next());
            Assert.Equal(17, selected.Next());
        }
示例#3
0
        public void YielderExtensionMap()
        {
            var yielder = Yielder.NaturalNumber().Map(v => v * 2 + 3);
            var mapped  = yielder.Map(v => v % 3);

            Assert.Equal(0, mapped.Next());
            Assert.Equal(2, mapped.Next());
            Assert.Equal(1, mapped.Next());
            Assert.Equal(0, mapped.Next());
        }
示例#4
0
        public void YielderExtensionSkip()
        {
            var yielder = Yielder.NaturalNumber().Skip(1).Map(v => v * v);
            var skipped = yielder.Skip(5);

            Assert.Equal(36, skipped.Next());
            Assert.Equal(49, skipped.Next());
            Assert.Equal(64, skipped.Next());
            Assert.Equal(81, skipped.Next());
            Assert.Equal(100, skipped.Next());
        }
示例#5
0
        public void YielderExtensionTakeWhile()
        {
            var yielder = Yielder.NaturalNumber().Skip(1).Map(v => v * v);
            var taken   = yielder.TakeWhile(v => v < 25);

            Assert.Equal(1, taken.Next());
            Assert.Equal(4, taken.Next());
            Assert.Equal(9, taken.Next());
            Assert.Equal(16, taken.Next());
            Assert.False(taken.HasNext());
        }
        public void FiniteYielderExtensionFilterAndMap()
        {
            var yielder  = Yielder.NaturalNumber().Map(v => v * 2 + 3).Take(4);
            var selected = yielder.Filter(v => v % 3 < 2).Map(v => v + 4);

            Assert.Equal(7, selected.Next());
            Assert.Equal(11, selected.Next());
            Assert.True(selected.HasNext());
            Assert.Equal(13, selected.Next());
            Assert.False(selected.HasNext());
            Assert.False(selected.HasNext());
        }
        public void FiniteYielderExtensionMap()
        {
            var yielder = Yielder.NaturalNumber().Map(v => v * 2 + 1).Take(4);
            var mapped  = yielder.Map(v => v % 3);

            Assert.Equal(1, mapped.Next());
            Assert.Equal(0, mapped.Next());
            Assert.Equal(2, mapped.Next());
            Assert.True(mapped.HasNext());
            Assert.Equal(1, mapped.Next());
            Assert.False(mapped.HasNext());
            Assert.False(mapped.HasNext());
        }
        public void FiniteYielderExtensionSkip()
        {
            var yielder = Yielder.NaturalNumber().Skip(1).Map(v => v * v).Take(10);
            var skipped = yielder.Skip(5);

            Assert.Equal(36, skipped.Next());
            Assert.Equal(49, skipped.Next());
            Assert.Equal(64, skipped.Next());
            Assert.Equal(81, skipped.Next());
            Assert.True(skipped.HasNext());
            Assert.Equal(100, skipped.Next());
            Assert.False(skipped.HasNext());
            Assert.False(skipped.HasNext());

            yielder = Yielder.NaturalNumber().Skip(1).Map(v => v * v).Take(10);
            skipped = yielder.Skip(12);
            Assert.False(skipped.HasNext());
            Assert.False(skipped.HasNext());
        }
示例#9
0
        public void YielderExtensionZip()
        {
            var yielderA = Yielder.NaturalNumber().Filter(x => x % 2 == 0);
            var yielderB = Yielder.NaturalNumber().Filter(x => x % 2 != 0);

            var zipped = yielderA.Zip(yielderB, (a, b) => a + b);

            Assert.Equal(1, zipped.Next());
            Assert.Equal(5, zipped.Next());
            Assert.Equal(9, zipped.Next());
            Assert.Equal(13, zipped.Next());

            zipped = yielderA.Zip(yielderB, (a, b) => a - b);

            Assert.Equal(-1, zipped.Next());
            Assert.Equal(-1, zipped.Next());
            Assert.Equal(-1, zipped.Next());
            Assert.Equal(-1, zipped.Next());
        }
 public void FiniteYielderExtensionContains()
 {
     Assert.True(Yielder.NaturalNumber().Map(v => v * 2 + 3).Take(4).Contains(7));
     Assert.False(Yielder.NaturalNumber().Map(v => v * 2 + 3).Take(4).Contains(11));
 }
 public void FiniteYielderExtensionCount()
 {
     Assert.Equal(3, Yielder.NaturalNumber().Map(v => v * 2 + 3).Take(4).Filter(v => v % 3 < 2).Count());
 }
 public void FiniteYielderExtensionAny()
 {
     Assert.False(Yielder.NaturalNumber().Map(v => v * 2 + 1).Take(2).Any(v => v % 3 == 2));
     Assert.True(Yielder.NaturalNumber().Map(v => v * 2 + 1).Take(3).Any(v => v % 3 == 2));
 }