public void YielderExtensionOfType() { bool v = true; int x = 0; // ReSharper disable once AssignmentInConditionalExpression var yielder = Yielder.Repeat(() => ((v = !v)) ? (Base) new A { Num = x++ } : new B() { Str = $"{x++}" }); var aYielder = yielder.OfType <Base, A>(); Assert.Equal(1, aYielder.Next().Num); Assert.Equal(3, aYielder.Next().Num); Assert.Equal(5, aYielder.Next().Num); Assert.Equal(7, aYielder.Next().Num); var bYielder = yielder.OfType <Base, B>(); Assert.Equal("8", bYielder.Next().Str); Assert.Equal("10", bYielder.Next().Str); Assert.Equal("12", bYielder.Next().Str); Assert.Equal("14", bYielder.Next().Str); }
public void YielderExtensionFilter() { int x = 1; var yielder = Yielder.Repeat(() => x += 2); var filtered = yielder.Filter(v => v % 3 == 0); Assert.Equal(3, filtered.Next()); Assert.Equal(9, filtered.Next()); Assert.Equal(15, filtered.Next()); Assert.Equal(21, filtered.Next()); }
public void FiniteYielderExtensionFilter() { int x = 1; var yielder = Yielder.Repeat(() => x += 2).Take(4); var filtered = yielder.Filter(v => v % 3 == 0); Assert.Equal(3, filtered.Next()); Assert.True(filtered.HasNext()); Assert.Equal(9, filtered.Next()); Assert.False(filtered.HasNext()); Assert.False(filtered.HasNext()); }
public static void EncodeDecodeTest() { var str = Yielder.Repeat(() => (char)DefaultRNG.I32.Next(32, 0xd800)).Take(1048576).ToList().Join(); var encoded = new UTF8Encoding(false).GetBytes(str); Assert.Equal(encoded, str.Encode()); Assert.Equal(encoded, str.Encode(new UTF8Encoding(false))); Assert.Equal(encoded, str.Encode("utf-8")); Assert.Equal(str, encoded.Decode()); Assert.Equal(str, encoded.Decode(Encoding.UTF8)); Assert.Equal(str, encoded.Decode("utf-8")); }
public void FiniteYielderExtensionOfType() { bool v = true; int x = 0; // ReSharper disable once AssignmentInConditionalExpression var yielder = Yielder.Repeat(() => ((v = !v)) ? (Base) new A { Num = x++ } : new B() { Str = $"{x++}" }).Take(8); var aYielder = yielder.OfType <Base, A>(); Assert.Equal(1, aYielder.Next().Num); Assert.Equal(3, aYielder.Next().Num); Assert.Equal(5, aYielder.Next().Num); Assert.True(aYielder.HasNext()); Assert.Equal(7, aYielder.Next().Num); Assert.False(aYielder.HasNext()); Assert.False(aYielder.HasNext()); }
public void YielderBase() { var yielder = Yielder.Const(7); Assert.Equal(7, yielder.Next()); Assert.Equal(7, yielder.Next()); Assert.Equal(7, yielder.Next()); Assert.Equal(7, yielder.Next()); int x = 1; yielder = Yielder.Repeat(() => x *= 2); Assert.Equal(2, yielder.Next()); Assert.Equal(4, yielder.Next()); Assert.Equal(8, yielder.Next()); Assert.Equal(16, yielder.Next()); yielder = Yielder.Iterate(v => v * 3, 1); Assert.Equal(3, yielder.Next()); Assert.Equal(9, yielder.Next()); Assert.Equal(27, yielder.Next()); Assert.Equal(81, yielder.Next()); }