public void EjectQuarter_WithQuarters_ShouldReturnAllQuarters() { var gm = new GumballMachineContext(5); gm.InsertQuarter(); gm.InsertQuarter(); gm.InsertQuarter(); Assert.AreEqual((uint)3, gm.GetQuartersCount()); sb.Remove(0, sb.Length); gm.EjectQuarter(); Assert.AreEqual((uint)0, gm.GetQuartersCount()); Assert.AreEqual("Quarters returned\r\n", sw.ToString()); }
public void InsertQuarter_WithQuarter_ShouldInsertQuarter_And_PrintInfo() { var gm = new GumballMachineContext(3); gm.InsertQuarter(); Assert.AreEqual((uint)1, gm.GetQuartersCount()); Assert.AreEqual("You inserted a quarter. Quarters count: 1\r\n", sw.ToString()); }
public void EjectQuarter_InSoldOutState_ShouldReturnAllQuarters() { var gm = new GumballMachineContext(1); gm.InsertQuarter(); gm.InsertQuarter(); gm.InsertQuarter(); Assert.AreEqual((uint)3, gm.GetQuartersCount()); gm.TurnCrank(); Assert.AreEqual(GetGumballMachineString(0, "sold out"), gm.ToString()); sb.Remove(0, sb.Length); gm.EjectQuarter(); Assert.AreEqual((uint)0, gm.GetQuartersCount()); Assert.AreEqual("Quarters returned\r\n", sw.ToString()); }
public void TurnCrank_And_InsertExtraQuarters_ShouldNotChangeGMState() { var gm = new GumballMachineContext(5); gm.InsertQuarter(); gm.InsertQuarter(); gm.InsertQuarter(); Assert.AreEqual((uint)3, gm.GetQuartersCount()); gm.TurnCrank(); gm.TurnCrank(); Assert.AreEqual((uint)1, gm.GetQuartersCount()); Assert.AreEqual((uint)3, gm.GetBallCount()); gm.InsertQuarter(); Assert.AreEqual((uint)2, gm.GetQuartersCount()); Assert.AreEqual(GetGumballMachineString(3, "waiting for turn of crank"), gm.ToString()); }
public void InsertQuarter_WithFiveQuarters_ShouldChangeGMStateToMaxQuarterState() { var gm = new GumballMachineContext(3); gm.InsertQuarter(); gm.InsertQuarter(); gm.InsertQuarter(); gm.InsertQuarter(); gm.InsertQuarter(); Assert.AreEqual((uint)5, gm.GetQuartersCount()); Assert.AreEqual(GetGumballMachineString(3, "at the max quarters quantity, waiting for turn of crank"), gm.ToString()); }
public void Refill_InHasQuarterState_ShouldRefill_And_NotLostQuarters() { var gm = new GumballMachineContext(2); gm.InsertQuarter(); gm.InsertQuarter(); Assert.AreEqual(GetGumballMachineString(2, "waiting for turn of crank"), gm.ToString()); sb.Remove(0, sb.Length); gm.Refill(2); Assert.AreEqual((uint)4, gm.GetBallCount()); Assert.AreEqual((uint)2, gm.GetQuartersCount()); Assert.AreEqual("Gumballs refilled. Gumballs count: 4\r\n", sw.ToString()); }
public void InsertQuarter_WithMoreThanFiveQuarters_ShouldChangeGMStateToMaxQuarterState() { var gm = new GumballMachineContext(3); gm.InsertQuarter(); gm.InsertQuarter(); gm.InsertQuarter(); gm.InsertQuarter(); gm.InsertQuarter(); sb.Remove(0, sb.Length); gm.InsertQuarter(); Assert.AreEqual((uint)5, gm.GetQuartersCount()); Assert.AreEqual("You can't insert another quarter. Max quarters quantity is 5\r\n", sw.ToString()); Assert.AreEqual(GetGumballMachineString(3, "at the max quarters quantity, waiting for turn of crank"), gm.ToString()); }