Exemple #1
0
        public void ForwardMessage_Should_Forward_Any_Message_Received(string message, string expectedMessage)
        {
            // GIVEN
            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();
            ICashRegister       cashRegister       = new CashRegister();

            CoffeeMachineLogic coffeeMachineLogic = new CoffeeMachineLogic(drinkMakerProtocol, cashRegister);

            // WHEN
            string forwardedMessage = coffeeMachineLogic.ForwardMessage(message);

            // THEN
            Check.That(forwardedMessage).IsEqualTo(expectedMessage);
        }
Exemple #2
0
        public void ForwardMessage_Should_Return_Correct_Instruction_For_Message(string message, string expectedMessage)
        {
            // GIVEN
            IDrinkMakerProtocol drinkMakerProtocol = Substitute.For <IDrinkMakerProtocol>();

            drinkMakerProtocol.BuildMessage(message).Returns(expectedMessage);

            var cashRegister       = Substitute.For <ICashRegister>();
            var coffeeMachineLogic = new CoffeeMachineLogic(drinkMakerProtocol, cashRegister);

            // WHEN
            string forwardedMessage = coffeeMachineLogic.ForwardMessage(message);

            // THEN
            Check.That(forwardedMessage).IsEqualTo(expectedMessage);
        }
Exemple #3
0
        public void ForwardMessage_Should_Call_BuildMessage_Of_DrinkMakerProtocol(string message)
        {
            // GIVEN
            var drinkMakerProtocol = Substitute.For <IDrinkMakerProtocol>();
            var cashRegister       = Substitute.For <ICashRegister>();

            var coffeeMachineLogic = new CoffeeMachineLogic(drinkMakerProtocol, cashRegister);

            // WHEN

            //TODO: Forward message should be on DrinkMaker
            string forwardedMessage = coffeeMachineLogic.ForwardMessage(message);

            // THEN
            drinkMakerProtocol.Received().BuildMessage(message);
        }
Exemple #4
0
        public void SendCommand_Should_Not_Call_BuildCommand_Of_DrinkMakerProtocol_With_Insufficient_Money_Inserted(double orderPrice, double insertedMoney)
        {
            // GIVEN
            var drinkOrder = Substitute.For <IDrinkOrder>();

            drinkOrder.GetPrice().Returns(orderPrice);

            var drinkMakerProtocol = Substitute.For <IDrinkMakerProtocol>();
            var cashRegister       = Substitute.For <ICashRegister>();
            var coffeeMachineLogic = new CoffeeMachineLogic(drinkMakerProtocol, cashRegister);

            coffeeMachineLogic.InsertMoney(insertedMoney);

            // WHEN
            coffeeMachineLogic.SendCommand(drinkOrder);

            // THEN
            drinkMakerProtocol.DidNotReceive().BuildCommand(drinkOrder);
        }
Exemple #5
0
        public void SendCommand_Should_Return_Empty_String()
        {
            // GIVEN
            var drinkOrder = Substitute.For <IDrinkOrder>();

            drinkOrder.GetPrice().Returns(0);

            var drinkMakerProtocol = Substitute.For <IDrinkMakerProtocol>();
            var cashRegister       = Substitute.For <ICashRegister>();

            cashRegister.IsInsertedAmountLessThan(0).Returns(true);

            var coffeeMachineLogic = new CoffeeMachineLogic(drinkMakerProtocol, cashRegister);

            // WHEN
            string command = coffeeMachineLogic.SendCommand(drinkOrder);

            // THEN
            Check.That(command).IsEmpty();
        }
Exemple #6
0
        public void SendCommand_Should_Call_BuildCommand_Of_DrinkMakerProtocol_With_Enough_Money_Inserted(double orderPrice, double insertedMoney)
        {
            // GIVEN
            var drinkOrder = Substitute.For <IDrinkOrder>();

            drinkOrder.GetPrice().Returns(orderPrice);

            var drinkMakerProtocol = Substitute.For <IDrinkMakerProtocol>();

            var cashRegister = Substitute.For <ICashRegister>();

            cashRegister.IsInsertedAmountLessThan(orderPrice).Returns(true);

            var coffeeMachineLogic = new CoffeeMachineLogic(drinkMakerProtocol, cashRegister);

            // WHEN
            coffeeMachineLogic.SendCommand(drinkOrder);

            // THEN
            drinkMakerProtocol.Received().BuildCommand(drinkOrder);
        }
Exemple #7
0
        public void SendMessage_Should_Send_Correct_Instructions_For_Orange_Juice_Order()
        {
            // GIVEN
            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();
            ICashRegister       cashRegister       = new CashRegister();

            CoffeeMachineLogic coffeeMachineLogic = new CoffeeMachineLogic(drinkMakerProtocol, cashRegister);

            IColdDrink  drink      = new OrangeJuice();
            IDrinkOrder drinkOrder = new DrinkOrder(drink);

            var price = drinkOrder.GetPrice();

            coffeeMachineLogic.InsertMoney(0.6);

            // WHEN
            string command = coffeeMachineLogic.SendCommand(drinkOrder);

            // THEN
            Check.That(command).IsEqualTo("O::");
        }
Exemple #8
0
        public void SendCommand_Should_Return_Missing_Money_Amount_With_Insufficient_Money_Inserted(double orderPrice, double insertedMoney, string expectedMessage)
        {
            // GIVEN
            var drinkOrder = Substitute.For <IDrinkOrder>();

            drinkOrder.GetPrice().Returns(orderPrice);

            var drinkMakerProtocol = Substitute.For <IDrinkMakerProtocol>();

            var cashRegister = Substitute.For <ICashRegister>();

            cashRegister.IsInsertedAmountLessThan(orderPrice).Returns(false);
            cashRegister.DifferenceWith(orderPrice).Returns(orderPrice - insertedMoney);

            var coffeeMachineLogic = new CoffeeMachineLogic(drinkMakerProtocol, cashRegister);

            // WHEN
            string command = coffeeMachineLogic.SendCommand(drinkOrder);

            // THEN
            Check.That(command).IsEqualTo(expectedMessage);
        }
Exemple #9
0
        public void SendMessage_Should_Send_Correct_Instructions_For_Chocolate_With_Two_Sugar_Order()
        {
            // GIVEN
            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();
            ICashRegister       cashRegister       = new CashRegister();

            CoffeeMachineLogic coffeeMachineLogic = new CoffeeMachineLogic(drinkMakerProtocol, cashRegister);

            IHotDrink drink = new Chocolate();

            drink.AddSugar().AddSugar();
            IDrinkOrder drinkOrder = new DrinkOrder(drink);

            var price = drinkOrder.GetPrice();

            coffeeMachineLogic.InsertMoney(price);

            // WHEN
            string command = coffeeMachineLogic.SendCommand(drinkOrder);

            // THEN
            Check.That(command).IsEqualTo("H:2:1");
        }