using System; using UnitTestSharp; namespace Susurrus.UnitTests { public class BusTests : TestFixture { public class CtorTests : TestFixture { public void KeepsTheName() { CheckEqual("Effects", new Bus("Effects").Name); } public void StartsAtFullVolumeAndUnmuted() { Bus bus = new Bus("Effects"); CheckEqual(1f, bus.Volume); CheckFalse(bus.IsMuted); CheckEqual(0, bus.Changes); } public void ANullName_Throws() { CheckThrow(typeof(ArgumentException)); new Bus(null); } public void AnEmptyName_Throws() { CheckThrow(typeof(ArgumentException)); new Bus(""); } } public class VolumeTests : TestFixture { public void SettingIt_ChangesTheVolumeAndCountsAChange() { Bus bus = new Bus("Effects"); bus.Volume = 0.25f; CheckEqual(0.25f, bus.Volume); CheckEqual(1, bus.Changes); } public void ANegativeVolume_ThrowsAndChangesNothing() { Bus bus = new Bus("Effects"); try { bus.Volume = -1f; Check(false); } catch (ArgumentOutOfRangeException) { } CheckEqual(1f, bus.Volume); CheckEqual(0, bus.Changes); } } public class IsMutedTests : TestFixture { public void SettingIt_CountsAChangeAndKeepsTheVolume() { Bus bus = new Bus("Effects"); bus.Volume = 0.5f; bus.IsMuted = true; CheckTrue(bus.IsMuted); CheckEqual(0.5f, bus.Volume); CheckEqual(2, bus.Changes); } } public class IsPausedTests : TestFixture { public void ByDefault_IsFalse() { CheckFalse(new Bus("Effects").IsPaused); } public void SettingIt_CountsAChangeAndKeepsTheVolumeAndTheMute() { Bus bus = new Bus("Effects"); bus.Volume = 0.5f; bus.IsPaused = true; CheckTrue(bus.IsPaused); CheckEqual(0.5f, bus.Gain); CheckEqual(2, bus.Changes); } public void ClearingIt_CountsAnotherChange() { Bus bus = new Bus("Effects"); bus.IsPaused = true; bus.IsPaused = false; CheckFalse(bus.IsPaused); CheckEqual(2, bus.Changes); } } public class GainTests : TestFixture { public void IsTheVolumeWhileUnmuted() { Bus bus = new Bus("Effects"); bus.Volume = 0.5f; CheckEqual(0.5f, bus.Gain); } public void IsZeroWhileMuted() { Bus bus = new Bus("Effects"); bus.Volume = 0.5f; bus.IsMuted = true; CheckEqual(0f, bus.Gain); } public void ReturnsToTheVolumeOnceUnmuted() { Bus bus = new Bus("Effects"); bus.Volume = 0.5f; bus.IsMuted = true; bus.IsMuted = false; CheckEqual(0.5f, bus.Gain); } } } }