public void CalculatePrice__PriceIsMaxValue__DoesNotThrow()
        {
            // A - arrange
            IRoom room = new Room { Price = decimal.MaxValue };
            IPriceRule priceRule = new TVAPriceRule();

            // A - act
            decimal result = priceRule.CalculatePrice(room);

            // A - assert
            Assert.AreEqual(decimal.MaxValue * 0.19m, result);
        }
        public void CalculatePrice__RoomIsNull__ArgumentNullExceptionIsThrown()
        {
            // A - arrange
            IRoom room = null;
            IPriceRule priceRule = new TVAPriceRule();
            bool isException = false;

            // A - act
            try
            {
                decimal result = priceRule.CalculatePrice(room);
            }
            catch (ArgumentNullException)
            {
                isException = true;
            }

            // A - assert
            Assert.IsTrue(isException, "ArgumentNullException is not thrown for a null Room object");
        }
        public void CalculatePrice__RoomPriceCoorectlySetup__ReturnedTvaValueIsCorrect()
        {
            // A - arrange
            IRoom room = new Room { Price = 50 };
            IPriceRule priceRule = new TVAPriceRule();

            // A - act
            decimal result = priceRule.CalculatePrice(room);

            // A - assert
            Assert.AreEqual(9.5m, result);
        }
        public void CalculatePrice__RoomIsNull__ArgumentNullExceptionIsThrown2()
        {
            // A - arrange
            IRoom room = null;
            IPriceRule priceRule = new TVAPriceRule();
            bool isException = false;

            // A - act

            decimal result = priceRule.CalculatePrice(room);

            // A - assert
        }