From: <gc...@us...> - 2002-10-30 04:46:54
|
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() ); } } } |