Example #1
0
        public void SetMachineInSoldStateWhenTurnCrank()
        {
            var machine = new TestGumballMachine();
            var state   = new HasQuarterState(machine);

            state.TurnCrank();
            Assert.AreEqual(machine.State, State.Sold);
        }
Example #2
0
        public void SetMachineInHasQuarterStateWhenInsertQuarter()
        {
            var machine = new TestGumballMachine();
            var state   = new NoQuarterState(machine);

            state.InsertQuarter();
            Assert.AreEqual(machine.GetQuartersController().GetQuartersCount(), (uint)1);
            Assert.AreEqual(machine.State, State.HasQuarter);
        }
Example #3
0
        public void SetMachineInNoQuarterStateWhenRefillItWithMoreThan0Balls()
        {
            var machine = new TestGumballMachine();
            var state   = new SoldOutState(machine);

            state.Refill(1);
            Assert.AreEqual(machine.GetBallCount(), (uint)1);
            Assert.AreEqual(machine.State, State.NoQuarter);
        }
Example #4
0
        public void StayMachineInSoldOutStateWhenRefillItWith0Balls()
        {
            var machine = new TestGumballMachine();
            var state   = new SoldOutState(machine);

            machine.SetSoldOutState();
            state.Refill(0);
            Assert.AreEqual(machine.GetBallCount(), (uint)0);
            Assert.AreEqual(machine.State, State.SoldOut);
        }
Example #5
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);
        }
Example #6
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);
        }
Example #7
0
        public void SetGumballMachineInSoldOutStateIfDispenseWith1BallAnd1QuarterInMachine()
        {
            var  machine     = new TestGumballMachine();
            uint ballsAmount = 1;

            machine.GetQuartersController().InsertQuarter();
            machine.BallsCount = ballsAmount;
            var state = new SoldState(machine);

            state.Dispense();
            Assert.AreEqual((uint)0, machine.BallsCount);
            Assert.IsFalse(machine.GetQuartersController().HasQuarters());
            Assert.AreEqual(machine.State, State.SoldOut);
        }
Example #8
0
        public void SetGumballMachineInHasQuarterStateIfDispenseWithMoreThan1BallsAndMoreThan1QuarterInMachine()
        {
            var machine = new TestGumballMachine();

            machine.GetQuartersController().InsertQuarter();
            machine.GetQuartersController().InsertQuarter();
            uint ballsAmount = 2;

            machine.BallsCount = ballsAmount;
            var state = new SoldState(machine);

            state.Dispense();
            Assert.IsTrue(machine.GetQuartersController().HasQuarters());
            Assert.AreEqual(machine.GetQuartersController().GetQuartersCount(), (uint)1);
            Assert.AreEqual((uint)1, machine.BallsCount);
            Assert.AreEqual(machine.State, State.HasQuarter);
        }
Example #9
0
        public void StayMachineInNoQuarterStateWhenRefillIt()
        {
            {
                var machine = new TestGumballMachine();
                machine.SetNoQuarterState();
                machine.BallsCount = 1;
                var state = new NoQuarterState(machine);
                state.Refill(1);
                Assert.AreEqual(machine.GetBallCount(), (uint)2);
                Assert.AreEqual(machine.State, State.NoQuarter);
            }

            {
                var machine = new TestGumballMachine();
                machine.SetNoQuarterState();
                machine.BallsCount = 1;
                var state = new NoQuarterState(machine);
                state.Refill(0);
                Assert.AreEqual(machine.GetBallCount(), (uint)1);
                Assert.AreEqual(machine.State, State.NoQuarter);
            }
        }
Example #10
0
        public void CantRefillMachine()
        {
            {
                var machine = new TestGumballMachine();
                machine.SetSoldState();
                machine.BallsCount = 1;
                var state = new SoldState(machine);
                state.Refill(1);
                Assert.AreEqual(machine.GetBallCount(), (uint)1);
                Assert.AreEqual(machine.State, State.Sold);
            }

            {
                var machine = new TestGumballMachine();
                machine.SetSoldState();
                machine.BallsCount = 1;
                var state = new SoldState(machine);
                state.Refill(0);
                Assert.AreEqual(machine.GetBallCount(), (uint)1);
                Assert.AreEqual(machine.State, State.Sold);
            }
        }