Update of /cvsroot/dotnetmock/dotnetmock/DotNetMock.Examples/Dynamic
In directory usw-pr-cvs1:/tmp/cvs-serv3274/DotNetMock.Examples/Dynamic
Added Files:
DefaultWeatherRandom.cs IWeatherRandom.cs Weather.cs
WeatherTest.cs
Log Message:
Added Examples project
Added Dynamic Examples
--- NEW FILE: DefaultWeatherRandom.cs ---
using System;
namespace DotNetMock.Examples.Dynamic
{
public class DefaultWeatherRandom : WeatherRandom
{
public const double CHANCE_OF_RAIN = 0.2;
public const double MIN_TEMPERATURE = 20;
public const double MAX_TEMPERATURE = 30;
private const double TEMPERATURE_RANGE = (MAX_TEMPERATURE-MIN_TEMPERATURE);
private System.Random rng;
public DefaultWeatherRandom( System.Random rng )
{
this.rng = rng;
}
public bool NextIsRaining()
{
return rng.NextDouble() < CHANCE_OF_RAIN;
}
public double NextTemperature()
{
return MIN_TEMPERATURE + rng.NextDouble() * TEMPERATURE_RANGE;
}
}
}
--- NEW FILE: IWeatherRandom.cs ---
using System;
namespace DotNetMock.Examples.Dynamic
{
public interface WeatherRandom
{
bool NextIsRaining();
double NextTemperature();
}
}
--- NEW FILE: Weather.cs ---
namespace DotNetMock.Examples.Dynamic
{
public class Weather
{
private WeatherRandom random;
private bool isRaining = false;
private double temperature = 0.0;
public Weather( WeatherRandom random )
{
this.random = random;
}
public bool IsRaining
{
get { return isRaining; }
}
public double Temperature
{
get { return temperature; }
}
public void Randomize()
{
temperature = random.NextTemperature();
isRaining = random.NextIsRaining();
if( isRaining ) temperature *= 0.5;
}
}
}
--- NEW FILE: WeatherTest.cs ---
using NUnit.Framework;
using DotNetMock.Dynamic;
namespace DotNetMock.Examples.Dynamic
{
[TestFixture]
public class WeatherTest
{
private IMock random;
private Weather weather;
[SetUp]
public void SetUp()
{
random = new DynamicMock(typeof(WeatherRandom));
weather = new Weather((WeatherRandom)random.Object);
}
[Test]
public void RandomRaining()
{
random.SetValue("NextTemperature", 1.0);
random.SetValue("NextIsRaining", true);
weather.Randomize();
Assertion.Assert("is raining", weather.IsRaining);
}
[Test]
public void RandomNotRaining()
{
random.SetValue("NextTemperature", 1.0);
random.SetValue("NextIsRaining", false);
weather.Randomize();
Assertion.Assert("is not raining", !weather.IsRaining);
}
[Test]
public void RandomTemperatureSunny()
{
double TEMPERATURE = 20.0;
random.SetValue("NextTemperature", TEMPERATURE);
random.SetValue("NextIsRaining", false);
weather.Randomize();
Assertion.AssertEquals("temperature", TEMPERATURE, weather.Temperature);
}
[Test]
public void RandomTemperatureRaining()
{
double TEMPERATURE = 20.0;
random.SetValue("NextTemperature", TEMPERATURE);
random.SetValue("NextIsRaining", true);
weather.Randomize();
Assertion.AssertEquals("temperature", TEMPERATURE / 2.0, weather.Temperature);
}
}
[TestFixture]
public class DefaultWeatherRandomTest
{
[Test]
public void NextIsRaining()
{
IMock random = new DynamicMock(typeof(System.Random));
WeatherRandom weather = new DefaultWeatherRandom((System.Random)random.Object);
random.SetValue("NextDouble", 0.0);
Assertion.Assert("is raining", weather.NextIsRaining());
random.SetValue("NextDouble", DefaultWeatherRandom.CHANCE_OF_RAIN);
Assertion.Assert("is not raining", !weather.NextIsRaining());
random.SetValue("NextDouble", 1.0);
Assertion.Assert("is not raining", !weather.NextIsRaining());
}
[Test]
public void NextTemperature()
{
IMock random = new DynamicMock(typeof(System.Random));
WeatherRandom weather = new DefaultWeatherRandom((System.Random)random.Object);
random.SetValue("NextDouble", 0.0);
Assertion.AssertEquals("should be min temperature",
DefaultWeatherRandom.MIN_TEMPERATURE,
weather.NextTemperature()
);
random.SetValue("NextDouble", 0.5);
Assertion.AssertEquals("should be average temperature",
0.5 * (DefaultWeatherRandom.MIN_TEMPERATURE + DefaultWeatherRandom.MAX_TEMPERATURE),
weather.NextTemperature()
);
random.SetValue("NextDouble", 1.0);
Assertion.AssertEquals("should be max temperature",
DefaultWeatherRandom.MAX_TEMPERATURE,
weather.NextTemperature()
);
}
}
}
|