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 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 EjectQuarter_InSoldOutState_ShouldNotChangeGMState()
        {
            var gm = new GumballMachineContext(0);

            gm.EjectQuarter();
            Assert.AreEqual((uint)0, gm.GetBallCount());
            Assert.AreEqual(GetGumballMachineString(0, "sold out"), gm.ToString());
        }
        public void EjectQuarter_InNoQuarterState_ShouldNotChangeGMState()
        {
            var gm = new GumballMachineContext(5);

            gm.EjectQuarter();
            Assert.AreEqual((uint)5, gm.GetBallCount());
            Assert.AreEqual(GetGumballMachineString(5, "waiting for quarter"), gm.ToString());
        }
        public void InsertAndTwiceEjectQuarterTest()
        {
            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(1, stringWriter);

            gumballMachine.InsertQuarter();
            gumballMachine.EjectQuarter();
            gumballMachine.EjectQuarter();
            result.WriteLine(BaseConstants.INSERT_QUARTER_NO_QUARTER_STATE);
            result.WriteLine(BaseConstants.EJECT_QUARTER_HAS_QUARTER_STATE);
            result.WriteLine(BaseConstants.EJECT_QUARTER_NO_QUARTER_STATE);

            Assert.AreEqual(result.ToString(), stringWriter.ToString());
            Assert.AreEqual(gumballMachineStateResult, gumballMachine.ToString());
        }
        public void EjectQuarter_InHasQuaterState_ShouldChangeGMStateToNoQuaterState()
        {
            var gm = new GumballMachineContext(1);

            gm.InsertQuarter();
            gm.EjectQuarter();
            Assert.AreEqual((uint)1, gm.GetBallCount());
            Assert.AreEqual(GetGumballMachineString(1, "waiting for quarter"), gm.ToString());
        }
Beispiel #7
0
        public void CantEjectQuarterInSoldOutState()
        {
            var  strState = "sold out";
            uint gumballs = 0;
            var  testStr  = GetGumballMachineTestParsedString(gumballs, strState);
            var  gM       = new GumballMachineContext();

            gM.EjectQuarter();
            Assert.AreEqual(gM.GetBallCount(), (uint)0);
            Assert.AreEqual(gM.ToString(), testStr);
        }
Beispiel #8
0
        public void CantEjectQuarterInNoQuarterState()
        {
            var  strState = "waiting for quarter";
            uint gumballs = 5;
            var  testStr  = GetGumballMachineTestParsedString(gumballs, strState);
            var  gM       = new GumballMachineContext(5);

            gM.EjectQuarter();
            Assert.AreEqual(gM.GetBallCount(), (uint)5);
            Assert.AreEqual(gM.ToString(), testStr);
        }
        public void EjectQuarterWithZeroBalls()
        {
            var    stringWriter = new StringWriter();
            var    result       = new StringWriter();
            string gumballMachineStateResult = $"(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 gumballMachine = new GumballMachineContext(0, stringWriter);

            gumballMachine.EjectQuarter();
            result.WriteLine(BaseConstants.EJECT_QUARTER_SOLD_OUT_STATE);

            Assert.AreEqual(result.ToString(), stringWriter.ToString());
            Assert.AreEqual(gumballMachineStateResult, gumballMachine.ToString());
        }
Beispiel #10
0
        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 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 EjectQuarterWithSomeBallsAndZeroQuarterTest()
        {
            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(2, stringWriter);

            gumballMachine.EjectQuarter();
            result.WriteLine(BaseConstants.EJECT_QUARTER_NO_QUARTER_STATE);

            Assert.AreEqual(result.ToString(), stringWriter.ToString());
            Assert.AreEqual(gumballMachineStateString, gumballMachine.ToString());
        }
Beispiel #13
0
        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());
        }