Exemplo n.º 1
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());
        }
Exemplo n.º 2
0
        public void InsertQuarter_WithQuarter_ShouldInsertQuarter_And_PrintInfo()
        {
            var gm = new GumballMachineContext(3);

            gm.InsertQuarter();
            Assert.AreEqual((uint)1, gm.GetQuartersCount());
            Assert.AreEqual("You inserted a quarter. Quarters count: 1\r\n", sw.ToString());
        }
Exemplo n.º 3
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());
        }
Exemplo n.º 4
0
        public void TurnCrank_And_InsertExtraQuarters_ShouldNotChangeGMState()
        {
            var gm = new GumballMachineContext(5);

            gm.InsertQuarter();
            gm.InsertQuarter();
            gm.InsertQuarter();

            Assert.AreEqual((uint)3, gm.GetQuartersCount());

            gm.TurnCrank();
            gm.TurnCrank();

            Assert.AreEqual((uint)1, gm.GetQuartersCount());
            Assert.AreEqual((uint)3, gm.GetBallCount());

            gm.InsertQuarter();

            Assert.AreEqual((uint)2, gm.GetQuartersCount());
            Assert.AreEqual(GetGumballMachineString(3, "waiting for turn of crank"), gm.ToString());
        }
Exemplo n.º 5
0
        public void InsertQuarter_WithFiveQuarters_ShouldChangeGMStateToMaxQuarterState()
        {
            var gm = new GumballMachineContext(3);

            gm.InsertQuarter();
            gm.InsertQuarter();
            gm.InsertQuarter();
            gm.InsertQuarter();
            gm.InsertQuarter();
            Assert.AreEqual((uint)5, gm.GetQuartersCount());
            Assert.AreEqual(GetGumballMachineString(3, "at the max quarters quantity, waiting for turn of crank"), gm.ToString());
        }
Exemplo n.º 6
0
        public void Refill_InHasQuarterState_ShouldRefill_And_NotLostQuarters()
        {
            var gm = new GumballMachineContext(2);

            gm.InsertQuarter();
            gm.InsertQuarter();
            Assert.AreEqual(GetGumballMachineString(2, "waiting for turn of crank"), gm.ToString());

            sb.Remove(0, sb.Length);
            gm.Refill(2);

            Assert.AreEqual((uint)4, gm.GetBallCount());
            Assert.AreEqual((uint)2, gm.GetQuartersCount());
            Assert.AreEqual("Gumballs refilled. Gumballs count: 4\r\n", sw.ToString());
        }
Exemplo n.º 7
0
        public void InsertQuarter_WithMoreThanFiveQuarters_ShouldChangeGMStateToMaxQuarterState()
        {
            var gm = new GumballMachineContext(3);

            gm.InsertQuarter();
            gm.InsertQuarter();
            gm.InsertQuarter();
            gm.InsertQuarter();
            gm.InsertQuarter();

            sb.Remove(0, sb.Length);
            gm.InsertQuarter();

            Assert.AreEqual((uint)5, gm.GetQuartersCount());
            Assert.AreEqual("You can't insert another quarter. Max quarters quantity is 5\r\n", sw.ToString());
            Assert.AreEqual(GetGumballMachineString(3, "at the max quarters quantity, waiting for turn of crank"), gm.ToString());
        }