コード例 #1
0
        public void TranslateOrder_ShouldReturnInstructionObject(string drinkName, double drinkCost, int sugarQuantity)
        {
            var   drinkType = new DrinkType(drinkName, drinkCost);
            Order order     = new Order(drinkType, sugarQuantity);
            var   result    = DrinkMakerProtocol.TranslateOrder(order);

            Assert.IsType <Instruction>(result);
        }
コード例 #2
0
        public void TranslateOrder_ShouldReturnCorrectString_FromOrderObject(string expected, string drinkName, double drinkCost, int sugarQuantity)
        {
            var   drinkType    = new DrinkType(drinkName, drinkCost);
            Order order        = new Order(drinkType, sugarQuantity);
            var   actualResult = DrinkMakerProtocol.TranslateOrder(order);

            Assert.Equal(expected, actualResult.InstructionMessage);
        }
コード例 #3
0
        public void AssessPaymentShould_ReturnCorrectOrderString_WhenSufficientPaymentAmount()
        {
            // Order order = new Order(drinkType: "tea", sugarQuantity: 1);
            var tea          = new DrinkType("tea", 0.4);
            var order        = new Order(tea, 1);
            var payment      = new Payment(1);
            var actualResult = DrinkMakerProtocol.AssessPayment(order, payment);

            Assert.Equal("T:1:0", actualResult.InstructionMessage);
        }
コード例 #4
0
        public void BuildCommand_Should_Build_Empty_Message()
        {
            // arange
            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();

            // act
            string message = drinkMakerProtocol.MakeOrder();

            // assert
            Assert.Empty(message);
        }
コード例 #5
0
        public void BuildMessage_Should_Build_Message(string message_content, string expectedMessage)
        {
            // arange
            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();

            // act
            string message = drinkMakerProtocol.BuildMessage(message_content);

            // assert
            Assert.Equal(expectedMessage, message);
        }
コード例 #6
0
        public void AssessPaymentShould_ReturnCorrectOrderString_WhenInSufficientPaymentAmount()
        {
            var tea            = new DrinkType("tea", 0.4);
            var order          = new Order(tea, 1);
            var payment        = new Payment(0.15);
            var expectedChange = 0.25;

            var actualResult = DrinkMakerProtocol.AssessPayment(order, payment);

            Assert.Equal($"M:Not enough, missing {expectedChange} euro", actualResult.InstructionMessage);
        }
コード例 #7
0
        public void BuildMessage_Sould_Build_Message_Just_Drink(string drinkCode, string expectedMessage)
        {
            // arange
            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();

            drinkMakerProtocol.SetCode(drinkCode);

            // act
            string message = drinkMakerProtocol.MakeOrder();

            // assert
            Assert.Equal(expectedMessage, message);
        }
コード例 #8
0
        public void Should_get_the_user_interface_message()
        {
            var command = "M:message-content";

            var result = DrinkMakerProtocol.Handle(command);

            var expectedResult = new DrinkMakerCommand()
            {
                Message = "message-content"
            };

            Assert.AreEqual(expectedResult, result);
        }
コード例 #9
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);
        }
コード例 #10
0
        public void BuildMessage_Sould_Build_Message_For_Drink_And_Sugar(string drinkCode, int sugarQty, string expectedMessage)
        {
            // arange
            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();

            drinkMakerProtocol.SetCode(drinkCode);
            drinkMakerProtocol.SetSugarQty(sugarQty);

            // act
            string message = drinkMakerProtocol.MakeOrder();

            // assert
            Assert.Equal(expectedMessage, message);
        }
コード例 #11
0
        public void BuildMessage_Should_Build_Empty_Message()
        {
            // GIVEN
            IDrinkOrder drinkOrder = Substitute.For <IDrinkOrder>();

            drinkOrder.GetDrinkCode().Returns(string.Empty);

            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();

            // WHEN
            string message = drinkMakerProtocol.BuildCommand(drinkOrder);

            // THEN
            Check.That(message).IsEmpty();
        }
コード例 #12
0
        public void Should_get_one_coffee_with_two_sugars_and_one_stick()
        {
            var command = "C:2:0";

            var result = DrinkMakerProtocol.Handle(command);

            var expectedResult = new DrinkMakerCommand()
            {
                HasStick   = true,
                SugarCount = 2,
                DrinkType  = DrinkType.Coffee
            };

            Assert.AreEqual(expectedResult, result);
        }
コード例 #13
0
        public void Should_get_one_chocolate_with_no_sugar_and_no_stick()
        {
            var command = "H::";

            var result = DrinkMakerProtocol.Handle(command);

            var expectedResult = new DrinkMakerCommand()
            {
                HasStick   = false,
                SugarCount = 0,
                DrinkType  = DrinkType.Chocolate
            };

            Assert.AreEqual(expectedResult, result);
        }
コード例 #14
0
        public void Should_get_one_tea_with_one_suger_and_no_stick()
        {
            var command = "T:1:0";

            var result = DrinkMakerProtocol.Handle(command);

            var expectedResult = new DrinkMakerCommand()
            {
                HasStick   = true,
                SugarCount = 1,
                DrinkType  = DrinkType.Tea
            };

            Assert.AreEqual(expectedResult, result);
        }
コード例 #15
0
        public void BuildMessage_Should_Build_Message_For_Drink(string drinkCode, string expectedMessage)
        {
            // GIVEN
            IDrinkOrder drinkOrder = Substitute.For <IDrinkOrder>();

            drinkOrder.GetDrinkCode().Returns(drinkCode);

            IDrinkMakerProtocol drinkMakerProtocol = new DrinkMakerProtocol();

            // WHEN
            string message = drinkMakerProtocol.BuildCommand(drinkOrder);

            // THEN
            Check.That(message).IsEqualTo(expectedMessage);
        }
コード例 #16
0
        public void SendOrder_Should_Return_Message_With_Insufficient_Money_in_Message(double drinkprice, double InsertedAmount, string expectedMessage)
        {
            // arrange
            var drinkorder = new Mock <IDrinkOrder>();

            drinkorder.Setup(x => x.GetDrinkPrice()).Returns(drinkprice);

            var drinkMakerProtocol = new DrinkMakerProtocol();
            var machineLogic       = new MachineLogic(drinkMakerProtocol);

            machineLogic.InsertMoney(InsertedAmount);

            // act
            string sendededMessage = machineLogic.SendOrder(drinkorder.Object);

            // assert
            Assert.Equal(expectedMessage, sendededMessage);
        }
コード例 #17
0
        public void SendOrder_Should_Return_Empty_Message(string codeDrink)
        {
            // arrange
            var beverageQuantityChecker = new Mock <IBeverageQuantityChecker>();

            beverageQuantityChecker.Setup(x => x.IsEmpty(codeDrink)).Returns(false);
            var emailNotifier = new Mock <IEmailNotifier>();

            emailNotifier.Setup(x => x.NotifyMissingDrink(codeDrink));
            var drinkmakerprotocol = new DrinkMakerProtocol();
            var machinelogic       = new MachineLogic(drinkmakerprotocol, beverageQuantityChecker.Object, emailNotifier.Object);
            var drinkorder         = new Mock <IDrinkOrder>();

            //act
            string command = machinelogic.SendOrder(drinkorder.Object);

            //assert
            Assert.Equal(string.Empty, command);
        }
コード例 #18
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::");
        }
コード例 #19
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");
        }
コード例 #20
0
        public void SendOrder_Should_Return_Message_If_There_Shortage(string codeDrink, double drinkprice, string expectedMessage)
        {
            // arrange
            var beverageQuantityChecker = new Mock <IBeverageQuantityChecker>();

            beverageQuantityChecker.Setup(x => x.IsEmpty(codeDrink)).Returns(true);
            var emailNotifier = new Mock <IEmailNotifier>();

            emailNotifier.Setup(x => x.NotifyMissingDrink(codeDrink));
            var drinkorder = new Mock <IDrinkOrder>();

            drinkorder.Setup(x => x.GetDrinkCode()).Returns(codeDrink);
            var drinkMakerProtocol = new DrinkMakerProtocol();
            var machineLogic       = new MachineLogic(drinkMakerProtocol, beverageQuantityChecker.Object, emailNotifier.Object);

            machineLogic.InsertMoney(drinkprice);

            // act
            string sendededMessage = machineLogic.SendOrder(drinkorder.Object);

            // assert
            Assert.Equal(expectedMessage, sendededMessage);
        }
コード例 #21
0
        public void sendOrder_Sould_Build_Message_For_Orange(string codeDrink, string expectedMessage)
        {
            // arrange
            var beverageQuantityChecker = new Mock <IBeverageQuantityChecker>();

            beverageQuantityChecker.Setup(x => x.IsEmpty(codeDrink)).Returns(false);
            var emailNotifier = new Mock <IEmailNotifier>();

            emailNotifier.Setup(x => x.NotifyMissingDrink(codeDrink));
            var drink              = new OrangeJuice();
            var drinkOrder         = new DrinkOrder(drink);
            var drinkMakerProtocol = new DrinkMakerProtocol();
            var logicMachine       = new MachineLogic(drinkMakerProtocol, beverageQuantityChecker.Object, emailNotifier.Object);

            logicMachine.InsertMoney(.60);


            // act
            string message = logicMachine.SendOrder(drinkOrder);

            // assert
            Assert.Equal(expectedMessage, message);
        }