public void TurnKrankThenBallsOverTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 0 } gumball{ ( 0 != 1 ? "s" : "" ) }" + $" { 0 } quarter{ ( 0 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_SOLD_OUT_STATE })"; var gumballMachine = new GumballMachineContext(2, stringWriter); gumballMachine.InsertQuarter(); gumballMachine.InsertQuarter(); gumballMachine.TurnCrank(); gumballMachine.TurnCrank(); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(2)); result.WriteLine(MultiGumbalMachineConstants.GetTurnCrankHasQuarterStateConst(1)); result.WriteLine(BaseConstants.RELEASE_BALL); result.WriteLine(MultiGumbalMachineConstants.GetTurnCrankHasQuarterStateConst(0)); result.WriteLine(BaseConstants.RELEASE_BALL); result.WriteLine(BaseConstants.DISPENSE_SOLD_STATE); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void GumballMachineInHasQuarterStateTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var noQuarterStateDescription = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 10 } gumball{ ( 10 != 1 ? "s" : "" ) } Machine is { BaseConstants.TO_STRING_NO_QUARTER_STATE })"; var noQuarterStateDescriptionAfterDispense = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 9 } gumball{ ( 9 != 1 ? "s" : "" ) } Machine is { BaseConstants.TO_STRING_NO_QUARTER_STATE })"; var gumballMachine = new GumballMachineContext(10, stringWriter); gumballMachine.InsertQuarter(); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); gumballMachine.InsertQuarter(); result.WriteLine(BaseConstants.INSERT_QUARTER_HAS_QUARTER_STATE); gumballMachine.EjectQuarter(); result.WriteLine(BaseConstants.EJECT_QUARTER_HAS_QUARTER_STATE); Assert.AreEqual(noQuarterStateDescription, gumballMachine.ToString()); gumballMachine.SetHasQuarterState(); gumballMachine.TurnCrank(); result.WriteLine(BaseConstants.TURN_CRANK_HAS_QUARTER_STATE); result.WriteLine(BaseConstants.RELEASE_BALL); Assert.AreEqual(noQuarterStateDescriptionAfterDispense, gumballMachine.ToString()); Assert.AreEqual(result.ToString(), stringWriter.ToString()); }
public void ReFillWithSomeQuartersTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachine = new GumballMachineContext(1, stringWriter); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 10 } gumball{ ( 10 != 1 ? "s" : "" ) }" + $" { 1 } quarter{ ( 1 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_HAS_QUARTER_STATE })"; var soldOutState = new SoldOutState(gumballMachine, stringWriter); gumballMachine.InsertQuarter(); gumballMachine.InsertQuarter(); gumballMachine.TurnCrank(); soldOutState.ReFill(10); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(2)); result.WriteLine(MultiGumbalMachineConstants.GetTurnCrankHasQuarterStateConst(1)); result.WriteLine(BaseConstants.RELEASE_BALL); result.WriteLine(BaseConstants.DISPENSE_SOLD_STATE); result.WriteLine(MultiGumbalMachineConstants.GetReFillSoldOutStateConst(10)); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void InsertQuarter_InHasQuarterState_ShouldNotChangeGMState() { var gm = new GumballMachineContext(5); gm.InsertQuarter(); gm.InsertQuarter(); Assert.AreEqual((uint)5, gm.GetBallCount()); Assert.AreEqual(GetGumballMachineString(5, "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 CantInsertQuarternGumballInHasQuarterState() { var strState = "waiting for turn of crank"; uint gumballs = 5; var testStr = GetGumballMachineTestParsedString(gumballs, strState); var gM = new GumballMachineContext(5); gM.InsertQuarter(); gM.InsertQuarter(); Assert.AreEqual(gM.GetBallCount(), (uint)5); Assert.AreEqual(gM.ToString(), testStr); }
public void CanInsert2QuartersTurnCrankInHasQuarterStateAndDespenseBallAndMovetoHasQuarterStateIfBallsMoreThan0() { var strState = "waiting for turn of crank"; uint gumballs = 1; var testStr = GetGumballMachineTestParsedString(gumballs, strState); var gM = new GumballMachineContext(2); gM.InsertQuarter(); gM.InsertQuarter(); gM.TurnCrank(); Assert.AreEqual(gM.GetBallCount(), gumballs); Assert.AreEqual(gM.ToString(), testStr); }
public void CanEjectAllQuartersInHasQuarterStateAndMoveToNoQuarterState() { var strState = "waiting for quarter"; uint gumballs = 1; var testStr = GetGumballMachineTestParsedString(gumballs, strState); var gM = new GumballMachineContext(gumballs); gM.InsertQuarter(); gM.InsertQuarter(); gM.EjectQuarters(); Assert.AreEqual(gM.GetBallCount(), gumballs); Assert.AreEqual(gM.ToString(), testStr); }
public void CanInsert2QuartersTurnCrankInHasQuarterStateAndDespenseBallAndMoveToSoldOutStateIfBalls0AndReturnQuarters() { var strState = "sold out"; uint gumballs = 0; var testStr = GetGumballMachineTestParsedString(gumballs, strState); var gM = new GumballMachineContext(1); gM.InsertQuarter(); gM.InsertQuarter(); gM.TurnCrank(); Assert.AreEqual(gM.GetBallCount(), gumballs); Assert.AreEqual(gM.ToString(), testStr); Assert.AreEqual(gM.GetQuartersController().GetQuartersCount(), (uint)0); }
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 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 TurnKrankAndEjectSomeQuartersTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 2 } gumball{ ( 2 != 1 ? "s" : "" ) }" + $" { 0 } quarter{ ( 0 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_NO_QUARTER_STATE })"; var gumballMachine = new GumballMachineContext(4, stringWriter); for (int i = 0; i < 4; i++) { gumballMachine.InsertQuarter(); } gumballMachine.TurnCrank(); gumballMachine.TurnCrank(); gumballMachine.EjectQuarter(); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(2)); result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(3)); result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(4)); result.WriteLine(MultiGumbalMachineConstants.GetTurnCrankHasQuarterStateConst(3)); result.WriteLine(BaseConstants.RELEASE_BALL); result.WriteLine(MultiGumbalMachineConstants.GetTurnCrankHasQuarterStateConst(2)); result.WriteLine(BaseConstants.RELEASE_BALL); result.WriteLine(MultiGumbalMachineConstants.GetEjectQuarterHasQuarterStateConst(2)); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void InsertSomeQuarterTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); string gumballMachineStateResult = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 1 } gumball{ ( 1 != 1 ? "s" : "" ) } Machine is { BaseConstants.TO_STRING_HAS_QUARTER_STATE })"; var gumballMachine = new GumballMachineContext(1, stringWriter); gumballMachine.InsertQuarter(); gumballMachine.InsertQuarter(); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); result.WriteLine(BaseConstants.INSERT_QUARTER_HAS_QUARTER_STATE); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateResult, gumballMachine.ToString()); }
public void InsertQuarter_InSoldOutState_ShouldNotChangeGMState() { var gm = new GumballMachineContext(0); gm.InsertQuarter(); Assert.AreEqual((uint)0, gm.GetBallCount()); Assert.AreEqual(GetGumballMachineString(0, "sold out"), gm.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 TurnCrank_WithOneBall_InHasQuarterState_ShouldChangeGMStateToSoldOutState() { var gm = new GumballMachineContext(1); gm.InsertQuarter(); gm.TurnCrank(); Assert.AreEqual((uint)0, gm.GetBallCount()); Assert.AreEqual(GetGumballMachineString(0, "sold out"), gm.ToString()); }
public void TurnCrank_WithBalls_InHasQuarterState_ShouldChangeGMStateToNoQuarterState() { var gm = new GumballMachineContext(2); gm.InsertQuarter(); gm.TurnCrank(); Assert.AreEqual((uint)1, gm.GetBallCount()); Assert.AreEqual(GetGumballMachineString(1, "waiting for quarter"), gm.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 CantInsertQuarterInSoldOutState() { var strState = "sold out"; uint gumballs = 0; var testStr = GetGumballMachineTestParsedString(gumballs, strState); var gM = new GumballMachineContext(); gM.InsertQuarter(); Assert.AreEqual(gM.GetBallCount(), (uint)0); Assert.AreEqual(gM.ToString(), testStr); }
public void EjectQuarterWithSomeQuartersTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachine = new GumballMachineContext(2, stringWriter); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 2 } gumball{ ( 2 != 1 ? "s" : "" ) }" + $" { 0 } quarter{ ( 0 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_HAS_QUARTER_STATE })"; var soldOutState = new SoldOutState(gumballMachine, stringWriter); gumballMachine.InsertQuarter(); gumballMachine.InsertQuarter(); soldOutState.EjectQuarter(); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(2)); result.WriteLine(MultiGumbalMachineConstants.GetEjectQuarterSoldOutStateConst(2)); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void CanTurnCrankInHasQuarterStateAndGoToNoQuarterStateIfAmountOfGumballsBeforeTurningCrankMoreThan1() { var strState = "waiting for quarter"; uint gumballs = 1; var testStr = GetGumballMachineTestParsedString(gumballs, strState); var gM = new GumballMachineContext(2); gM.InsertQuarter(); gM.TurnCrank(); Assert.AreEqual(gM.GetBallCount(), (uint)1); Assert.AreEqual(gM.ToString(), testStr); }
public void CanTurnCrankInHasQuarterStateAndGoToNoQuarterStateIfAmountOfGumballsIs1BeforeTurningCrank() { var strState = "sold out"; uint gumballs = 0; var testStr = GetGumballMachineTestParsedString(gumballs, strState); var gM = new GumballMachineContext(1); gM.InsertQuarter(); gM.TurnCrank(); Assert.AreEqual(gM.GetBallCount(), (uint)0); Assert.AreEqual(gM.ToString(), testStr); }
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 GumballMachineInSoldOutStateTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachine = new GumballMachineContext(0, stringWriter); gumballMachine.InsertQuarter(); result.WriteLine(BaseConstants.INSERT_QUARTER_SOLD_OUT_STATE); gumballMachine.EjectQuarter(); result.WriteLine(BaseConstants.EJECT_QUARTER_SOLD_OUT_STATE); gumballMachine.TurnCrank(); result.WriteLine(BaseConstants.TURN_CRANK_SOLD_OUT_STATE); result.WriteLine(BaseConstants.DISPENSE_SOLD_OUT_STATE); Assert.AreEqual(result.ToString(), stringWriter.ToString()); }
public void InsertQuarterWithZeroBallsTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 0 } gumball{ ( 0 != 1 ? "s" : "" ) }" + $" { 0 } quarter{ ( 0 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_SOLD_OUT_STATE })"; var gumballMachine = new GumballMachineContext(0, stringWriter); gumballMachine.InsertQuarter(); result.WriteLine(BaseConstants.INSERT_QUARTER_SOLD_OUT_STATE); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void TurnCrankWithQuarterAndSomeBalls() { var stringWriter = new StringWriter(); var result = new StringWriter(); string gumballMachineStateResult = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 1 } gumball{ ( 1 != 1 ? "s" : "" ) } Machine is { BaseConstants.TO_STRING_NO_QUARTER_STATE })"; var gumballMachine = new GumballMachineContext(2, stringWriter); gumballMachine.InsertQuarter(); gumballMachine.TurnCrank(); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); result.WriteLine(BaseConstants.TURN_CRANK_HAS_QUARTER_STATE); result.WriteLine(BaseConstants.RELEASE_BALL); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateResult, gumballMachine.ToString()); }
public void ReFillAfterInsertQuarterTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 2 } gumball{ ( 2 != 1 ? "s" : "" ) }" + $" { 1 } quarter{ ( 1 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_HAS_QUARTER_STATE })"; var gumballMachine = new GumballMachineContext(2, stringWriter); gumballMachine.InsertQuarter(); gumballMachine.ReFill(10); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); result.WriteLine(MultiGumbalMachineConstants.REFILL_HAS_QUARTER_STATE); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void DispenseWithSomeBallsTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachine = new GumballMachineContext(2, stringWriter); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 1 } gumball{ ( 1 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_NO_QUARTER_STATE })"; var soldState = new SoldState(gumballMachine, stringWriter); gumballMachine.InsertQuarter(); soldState.Dispense(); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); result.WriteLine(BaseConstants.RELEASE_BALL); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void CantInsertMoreThan5Quarters() { uint gumballs = 1; var gM = new GumballMachineContext(gumballs); gM.InsertQuarter(); gM.InsertQuarter(); gM.InsertQuarter(); gM.InsertQuarter(); gM.InsertQuarter(); gM.InsertQuarter(); Assert.AreEqual(gM.GetQuartersController().GetQuartersCount(), (uint)5); }
public void DispenseWithZeroBallsTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachine = new GumballMachineContext(1, stringWriter); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 0 } gumball{ ( 0 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_SOLD_OUT_STATE })"; var soldState = new SoldState(gumballMachine, stringWriter); var hasQuarterState = new HasQuarterState(gumballMachine, stringWriter); gumballMachine.InsertQuarter(); hasQuarterState.TurnCrank(); soldState.Dispense(); result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE); result.WriteLine(BaseConstants.TURN_CRANK_HAS_QUARTER_STATE); result.WriteLine(BaseConstants.RELEASE_BALL); result.WriteLine(BaseConstants.DISPENSE_SOLD_STATE); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }