コード例 #1
0
        public void ShouldCorrectTransferState()
        {
            var gumballMachine = new GumballMachine(10);

            Assert.Equal(gumballMachine.GetState().GetType(), typeof(NoQuarterState));

            gumballMachine.InsertQuarter();

            Assert.Equal(gumballMachine.GetState().GetType(), typeof(HasQuarterState));

            gumballMachine.EjectQuarter();

            Assert.Equal(gumballMachine.GetState().GetType(), typeof(NoQuarterState));
        }
コード例 #2
0
        private static void TestState()
        {
            GumballMachine gumballMachine = new GumballMachine(1);

            Console.WriteLine("--Chamando todos os métodos que não mudam o estado do estado atual: {0}", gumballMachine.GetState());
            gumballMachine.EjectQuarter();
            gumballMachine.TurnCrank();
            gumballMachine.ReleaseGum();
            Console.WriteLine("--Inserindo a moeda para alterar o estado.");
            gumballMachine.InsertQuarter();
            Console.WriteLine("--{0} gomas.", gumballMachine.Count);
            Console.WriteLine("-----------------------------------------");

            Console.WriteLine("--Chamando todos os métodos que não mudam o estado do estado atual: {0}", gumballMachine.GetState());
            gumballMachine.InsertQuarter();
            gumballMachine.ReleaseGum();
            Console.WriteLine("--Ejetando a moeda para alterar o estado.");
            gumballMachine.EjectQuarter();
            Console.WriteLine("--{0} gomas.", gumballMachine.Count);
            Console.WriteLine("-----------------------------------------");

            Console.WriteLine("--Chamando todos os métodos que não mudam o estado do estado atual: {0}", gumballMachine.GetState());
            gumballMachine.EjectQuarter();
            gumballMachine.TurnCrank();
            gumballMachine.ReleaseGum();
            Console.WriteLine("--Inserindo novamente a moeda para alterar o estado.");
            gumballMachine.InsertQuarter();
            Console.WriteLine("--{0} gomas.", gumballMachine.Count);
            Console.WriteLine("-----------------------------------------");

            Console.WriteLine("--Chamando todos os métodos que não mudam o estado do estado atual: {0}", gumballMachine.GetState());
            gumballMachine.InsertQuarter();
            gumballMachine.ReleaseGum();
            Console.WriteLine("--Virando a engrenagem.");
            gumballMachine.TurnCrank();
            Console.WriteLine("--{0} gomas.", gumballMachine.Count);
            Console.WriteLine("-----------------------------------------");

            Console.WriteLine("--Chamando todos os métodos que não mudam o estado do estado atual: {0}", gumballMachine.GetState());
            gumballMachine.InsertQuarter();
            gumballMachine.EjectQuarter();
            gumballMachine.TurnCrank();
            Console.WriteLine("--Dispensando a goma.");
            gumballMachine.ReleaseGum();
            Console.WriteLine("--{0} gomas.", gumballMachine.Count);
            Console.WriteLine("-----------------------------------------");

            Console.WriteLine("--Chamando todos os métodos que não mudam o estado do estado atual: {0}", gumballMachine.GetState());
            gumballMachine.EjectQuarter();
            gumballMachine.TurnCrank();
            gumballMachine.ReleaseGum();
            gumballMachine.EjectQuarter();
            Console.WriteLine("--Repondo as gomas.");
            gumballMachine.Fill();
            Console.WriteLine("--{0} gomas.", gumballMachine.Count);
            Console.WriteLine("-----------------------------------------");

            Console.WriteLine("--Estado atual: {0}", gumballMachine.GetState());
        }