public void DispenseWithZeroBallsAndSomeQuartersTest() { 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" : "" ) }" + $" { 1 } quarter{ ( 1 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_SOLD_OUT_STATE })"; var soldState = new SoldState(gumballMachine, stringWriter); var hasQuarterState = new HasQuarterState(gumballMachine, stringWriter); gumballMachine.InsertQuarter(); gumballMachine.InsertQuarter(); hasQuarterState.TurnCrank(); soldState.Dispense(); 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); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public GumballMachine(int numberOfGumballs) { SoldOutState = new SoldOutState(this); NoQuarterState = new NoQuarterState(this); HasQuarterState = new HasQuarterState(this); SoldState = new SoldState(this); }
public void SetMachineInSoldStateWhenTurnCrank() { var machine = new TestGumballMachine(); var state = new HasQuarterState(machine); state.TurnCrank(); Assert.AreEqual((Enums.State)machine.State, Enums.State.Sold); }
public GumBallMachine() { NoQuarterStateObj = new NoQuarterState(this); HasQuarterStateObj = new HasQuarterState(this); SoldStateObj = new SoldState(this); SoldOutStateObj = new SoldOutState(this); state = SoldOutStateObj; }
public void SetMachineInNoQuarterStateWhenEjectQuarter() { var machine = new TestGumballMachine(); var state = new HasQuarterState(machine); state.EjectQuarter(); Assert.AreEqual((Enums.State)machine.State, Enums.State.NoQuarter); }
public GumballMachineContext(uint numBalls = 0) { _count = numBalls; _soldState = new SoldState(this); _soldOutState = new SoldOutState(this); _noQuarterState = new NoQuarterState(this); _hasQuarterState = new HasQuarterState(this); _state = (_count > 0) ? _noQuarterState : (IState)_soldOutState; }
public GumballMachineContext(uint numBalls = 0) { _quartersController = new QuartersController(MaxQuartersLimit); _count = numBalls; _soldState = new SoldState(this); _soldOutState = new SoldOutState(this); _noQuarterState = new NoQuarterState(this); _hasQuarterState = new HasQuarterState(this); _state = (_count > 0) ? _noQuarterState : (IState)_soldOutState; }
public GumballMachine(int numberGumballs) { Count = numberGumballs; SoldOutState = new SoldOutState(this); NoQuarterState = new NoQuarterState(this); HasQuarterState = new HasQuarterState(this); SoldState = new SoldState(this); WinnerState = new WinnerState(this); _state = (Count > 0) ? NoQuarterState : SoldOutState; }
public GumballMachine(int numberGumballs) { SoldOutState = new SoldOutState(this); NoQuarterState = new NoQuarterState(this); HasQuarterState = new HasQuarterState(this); SoldState = new SoldState(this); WinnerState = new WinnerState(this); Count = numberGumballs; _currentState = Count > 0 ? NoQuarterState : SoldOutState; }
public void SetMachineInNoQuarterStateWhenEjectQuarters() { var machine = new TestGumballMachine(); machine.GetQuartersController().InsertQuarter(); var state = new HasQuarterState(machine); state.EjectQuarters(); Assert.IsFalse(machine.GetQuartersController().HasQuarters()); Assert.AreEqual(machine.State, State.NoQuarter); }
public GumballMachine(int ballCount) { SoldOutState = new SoldOutState(this); NoQuarterState = new NoQuarterState(this); HasQuarterState = new HasQuarterState(this); SoldState = new SoldState(this); BallCount = ballCount; if (ballCount > 0) { State = NoQuarterState; } }
public void ToStringTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachine = new GumballMachineContext(3, stringWriter); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 3 } gumball{ ( 3 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_NO_QUARTER_STATE })"; var hasQuarterState = new HasQuarterState(gumballMachine, stringWriter); Assert.AreEqual(BaseConstants.TO_STRING_HAS_QUARTER_STATE, hasQuarterState.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public GumballMachine(int numberGumBalls) { SoldState = new SoldState(this); NoQuarterState = new NoQuarterState(this); HasQuarterState = new HasQuarterState(this); this.CountGumBall = numberGumBalls; if (CountGumBall > 0) { currentState = NoQuarterState; } }
public void StayMachineInHasQuarterStateWhenInsertQuarter() { var machine = new TestGumballMachine(); machine.SetHasQuarterState(); machine.GetQuartersController().InsertQuarter(); var state = new HasQuarterState(machine); state.InsertQuarter(); Assert.IsTrue(machine.GetQuartersController().HasQuarters()); Assert.AreEqual(machine.GetQuartersController().GetQuartersCount(), (uint)2); Assert.AreEqual(machine.State, State.HasQuarter); }
public GumballMachine(int numberOfGumballs) { GumballMachineSoldState = new SoldState(this); GumballMachineNoQuarterState = new NoQuarterState(this); GumballMachineHasQuarterState = new HasQuarterState(this); GumballMachineSoldOutState = new SoldOutState(this); GumballMachineWinnerState = new WinnerState(this); Count = numberOfGumballs; if (Count > 0) { State = GumballMachineNoQuarterState; } }
public GumballMachine(int numberGumballs) { SoldOutState = new SoldOutState(this); NoQuarterState = new NoQuarterState(this); HasQuarterState = new HasQuarterState(this); SoldState = new SoldState(this); State = SoldOutState; this.Count = numberGumballs; if (numberGumballs > 0) { State = NoQuarterState; } }
public GumballMachine(int count) { noQarterState = new NoQarterState(this); hasQuarterState = new HasQuarterState(this); soldState = new SoldState(this); soldOutState = new SoldOutState(this); winnerState = new WinnerState(this); this.count = count; if (count > 0) { setState(noQarterState); } else { setState(soldOutState); } }
public void TurnCrankTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachine = new GumballMachineContext(3, stringWriter); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 3 } gumball{ ( 3 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_SOLD_STATE })"; var hasQuarterState = new HasQuarterState(gumballMachine, stringWriter); hasQuarterState.InsertQuarter(); hasQuarterState.TurnCrank(); result.WriteLine(BaseConstants.INSERT_QUARTER_HAS_QUARTER_STATE); result.WriteLine(BaseConstants.TURN_CRANK_HAS_QUARTER_STATE); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void InsertSomeQuarterTest() { 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" : "" ) }" + $" { 2 } quarter{ ( 2 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_NO_QUARTER_STATE })"; var hasQuarterState = new HasQuarterState(gumballMachine, stringWriter); hasQuarterState.InsertQuarter(); hasQuarterState.InsertQuarter(); result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(1)); result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(2)); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void TurnCrankWithOneQuarterTest() { var stringWriter = new StringWriter(); var result = new StringWriter(); var gumballMachine = new GumballMachineContext(3, stringWriter); var gumballMachineStateString = $"(Mighty Gumball, Inc.C# - enabled Standing Gumball Model #2019 (with state)Inventory:" + $" { 3 } gumball{ ( 3 != 1 ? "s" : "" ) }" + $" { 0 } quarter{ ( 0 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_SOLD_STATE })"; var hasQuarterState = new HasQuarterState(gumballMachine, stringWriter); hasQuarterState.InsertQuarter(); hasQuarterState.TurnCrank(); result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(1)); result.WriteLine(MultiGumbalMachineConstants.GetTurnCrankHasQuarterStateConst(0)); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public void StayMachineInHasQuarterStateWhenRefillIt() { { var machine = new TestGumballMachine(); machine.SetHasQuarterState(); machine.BallsCount = 1; var state = new HasQuarterState(machine); state.Refill(1); Assert.AreEqual(machine.GetBallCount(), (uint)2); Assert.AreEqual(machine.State, State.HasQuarter); } { var machine = new TestGumballMachine(); machine.SetHasQuarterState(); machine.BallsCount = 1; var state = new HasQuarterState(machine); state.Refill(0); Assert.AreEqual(machine.GetBallCount(), (uint)1); Assert.AreEqual(machine.State, State.HasQuarter); } }
public void InsertMaxQuarterTest() { 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" : "" ) }" + $" { 5 } quarter{ ( 5 != 1 ? "s" : "" ) } " + $"Machine is { BaseConstants.TO_STRING_NO_QUARTER_STATE })"; var hasQuarterState = new HasQuarterState(gumballMachine, stringWriter); for (int i = 0; i < 6; i++) { hasQuarterState.InsertQuarter(); } for (uint i = 0; i < 5; i++) { result.WriteLine(MultiGumbalMachineConstants.GetInsertQuarterHasQuarterStateConst(i + 1)); } result.WriteLine(MultiGumbalMachineConstants.INSERT_QUARTER_MAX_LIMIT_HAS_QUARTER_STATE); Assert.AreEqual(result.ToString(), stringWriter.ToString()); Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString()); }
public HasQuarterStateTest() { _gumballMachineWithStateMock = new Mock <GumballMachineWithStateContext>(); _hasQuarterState = new HasQuarterState(_gumballMachineWithStateMock.Object); }