public void TestGumballMachine() { HeadFirstDesignPatterns.State.GumballMachine.GumballMachine gumballMachine = new HeadFirstDesignPatterns.State.GumballMachine.GumballMachine(5); StringBuilder gumballMachineOutput = new StringBuilder(); gumballMachineOutput.Append(gumballMachine.MachineStateHeader() + "\n"); gumballMachineOutput.Append(gumballMachine.InsertQuarter()); gumballMachineOutput.Append(gumballMachine.TurnCrank() + "\n"); gumballMachineOutput.Append(gumballMachine.MachineStateHeader() + "\n"); gumballMachineOutput.Append(gumballMachine.InsertQuarter()); gumballMachineOutput.Append(gumballMachine.TurnCrank()); gumballMachineOutput.Append(gumballMachine.InsertQuarter()); gumballMachineOutput.Append(gumballMachine.TurnCrank() + "\n"); gumballMachineOutput.Append(gumballMachine.MachineStateHeader() + "\n"); gumballMachineOutput.Append(gumballMachine.Refill(5) + "\n"); gumballMachineOutput.Append(gumballMachine.MachineStateHeader() + "\n"); //Because of the System.Random object, there is no way to know //the outcome of the turn of the crank. Therefore, I am writing //to the console. Use the Console.Out tab of NUnit Console.WriteLine(gumballMachineOutput.ToString()); }
public SoldOutState(GumballMachine gumballMachine) { this.gumballMachine = gumballMachine; }
public NoQuarterState(GumballMachine gumballMachine) { this.gumballMachine = gumballMachine; hasQuarterState = new HasQuarterState(gumballMachine); }
//When I was using the winnerState and soldState instance variables I was //getting "An unhandled exception of type 'System.StackOverflowException' //occurred in mscorlib.dll" error? // State winnerState; // State soldState; #endregion//Members #region Constructor public HasQuarterState(GumballMachine gumballMachine) { this.gumballMachine = gumballMachine; // winnerState = new WinnerState(gumballMachine); // soldState = new SoldState(gumballMachine); }
public WinnerState(GumballMachine gumballMachine) { this.gumballMachine = gumballMachine; soldOutState = new SoldOutState(gumballMachine); noQuarterState = new NoQuarterState(gumballMachine); }
public SoldState(GumballMachine gumballMachine) { this.gumballMachine = gumballMachine; noQuarterState = new NoQuarterState(gumballMachine); soldOutState = new SoldOutState(gumballMachine); }