|
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using SampleETLJob.Operations;
using Rhino.Etl.Core;
using SampleETLJob.DataObjects;
namespace Test
{
[TestClass]
public class YieldReturnTest : BaseTestClass
{
private class NumberGenerator
{
public int NumbersGenerated { get; set; }
public IEnumerable<int> GenerateNumbers()
{
for (int i = 1; i < int.MaxValue; i++)
{
Console.WriteLine("NumberGenerator generated a number");
NumbersGenerated++;
yield return i;
}
}
}
[TestMethod]
public void UnenumeratedDoesNoWork()
{
var generator = new NumberGenerator();
generator.GenerateNumbers();
Assert.AreEqual(0, generator.NumbersGenerated);
}
[TestMethod]
public void GenerateFiveNumbers()
{
var generator = new NumberGenerator();
foreach (int number in generator.GenerateNumbers())
{
Console.WriteLine(number);
if (number == 5) break;
}
Assert.AreEqual(5, generator.NumbersGenerated);
}
private class ChainedNumberGenerator
{
public int NumbersGenerated { get; set; }
public IEnumerable<int> GenerateNumbers(IEnumerable<int> inNumbers)
{
foreach(int i in inNumbers)
{
Console.WriteLine("ChainedNumberGenerator generated a number");
NumbersGenerated++;
yield return i;
}
}
}
[TestMethod]
public void ChainedNumberGeneratorsAreDependentOnEachOther()
{
var firstGenerator = new NumberGenerator();
var lastGenerator = new ChainedNumberGenerator();
foreach (int number in lastGenerator.GenerateNumbers(firstGenerator.GenerateNumbers()))
{
Console.WriteLine(number);
if (number == 5) break;
}
Assert.AreEqual(5, lastGenerator.NumbersGenerated);
Assert.AreEqual(5, firstGenerator.NumbersGenerated);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I've been a software developer since 1996 and have enjoyed C# since 2003. I have a Bachelor's degree in Computer Science and for some reason, a Master's degree in Business Administration. I currently do software development contracting/consulting.