using System; using Azimuth; using UnitTestSharp; namespace Konis.UnitTests { public class EmitterDefTests : TestFixture { public class ClockTests : TestFixture { public void IsGameTimeUntilGiven() { CheckEqual(ClockBase.Game, new PlainEmitterDef().Clock); } public void IsSetByAnInitializer() { CheckEqual(ClockBase.Real, new PlainEmitterDef { Clock = ClockBase.Real }.Clock); } } public class CapacityTests : TestFixture { public void IsZeroUntilGiven() { CheckEqual(0, new PlainEmitterDef().Capacity); } public void IsSetByAnInitializer() { CheckEqual(64, new PlainEmitterDef { Capacity = 64 }.Capacity); } } public class RateTests : TestFixture { public void IsEmptyUntilGiven() { CheckTrue(new PlainEmitterDef().Rate.IsEmpty); } public void ANumberGiven_DrawsThatNumber() { var def = new PlainEmitterDef { Rate = 30 }; CheckEqual(30.0, def.Rate.Minimum.Value); CheckEqual(30.0, def.Rate.Maximum.Value); } } public class LifespanTests : TestFixture { public void IsEmptyUntilGiven() { CheckTrue(new PlainEmitterDef().Lifespan.IsEmpty); } public void IsSetByAnInitializer() { CheckEqual(3.0, new PlainEmitterDef { Lifespan = 3 }.Lifespan.Minimum.Value); } } public class ValidateTests : TestFixture { public void WithACapacity_Passes() { new PlainEmitterDef { Capacity = 10 }.Validate(); } public void WithARateAndALifespan_Passes() { new PlainEmitterDef { Capacity = 10, Rate = new Variation(5, 10), Lifespan = 3 }.Validate(); } public void ACapacityOfZero_Throws() { CheckThrow(typeof(InvalidOperationException)); new PlainEmitterDef().Validate(); } public void ANegativeCapacity_Throws() { CheckThrow(typeof(InvalidOperationException)); new PlainEmitterDef { Capacity = -1 }.Validate(); } public void ARateBelowZero_Throws() { CheckThrow(typeof(InvalidOperationException)); new PlainEmitterDef { Capacity = 10, Rate = new Variation(-1, 1) }.Validate(); } public void ALifespanBelowZero_Throws() { CheckThrow(typeof(InvalidOperationException)); new PlainEmitterDef { Capacity = 10, Lifespan = new Variation(-1, 1) }.Validate(); } } } }