Пример #1
0
        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);
 }
Пример #3
0
        public void SetMachineInSoldStateWhenTurnCrank()
        {
            var machine = new TestGumballMachine();
            var state   = new HasQuarterState(machine);

            state.TurnCrank();
            Assert.AreEqual((Enums.State)machine.State, Enums.State.Sold);
        }
Пример #4
0
 public GumBallMachine()
 {
     NoQuarterStateObj  = new NoQuarterState(this);
     HasQuarterStateObj = new HasQuarterState(this);
     SoldStateObj       = new SoldState(this);
     SoldOutStateObj    = new SoldOutState(this);
     state = SoldOutStateObj;
 }
Пример #5
0
        public void SetMachineInNoQuarterStateWhenEjectQuarter()
        {
            var machine = new TestGumballMachine();
            var state   = new HasQuarterState(machine);

            state.EjectQuarter();
            Assert.AreEqual((Enums.State)machine.State, Enums.State.NoQuarter);
        }
Пример #6
0
 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;
 }
Пример #7
0
 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;
 }
Пример #8
0
 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;
 }
Пример #9
0
 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;
 }
Пример #10
0
        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);
        }
Пример #11
0
 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;
     }
 }
Пример #12
0
        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;
            }
        }
Пример #14
0
        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);
        }
Пример #15
0
        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;
            }
        }
Пример #16
0
        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;
            }
        }
Пример #17
0
    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);
        }
    }
Пример #18
0
        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());
        }
Пример #19
0
        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());
        }
Пример #20
0
        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());
        }
Пример #21
0
        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);
            }
        }
Пример #22
0
        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());
        }
Пример #23
0
 public HasQuarterStateTest()
 {
     _gumballMachineWithStateMock = new Mock <GumballMachineWithStateContext>();
     _hasQuarterState             = new HasQuarterState(_gumballMachineWithStateMock.Object);
 }