public void IsMenuContainingNoMenuItemsByDefaultTest()
        {
            var aMenu = new Menu();

            Assert.IsNotNull(aMenu.Items, "Upon initialization, the Menu shall not contain any Items!");
            Assert.AreEqual(0, aMenu.Items.Count, "Upon initializatin, the Menu shall contain zero Items!");
        }
        public void IsMenuHandlingOfTheMenuItemsCorrectTest()
        {
            var someMenuItems = new List<MenuItem>();
            int numberOfMenuItems = new Random().Next(1, 100);
            for (int idx = 0; idx < numberOfMenuItems; idx++)
            {
                var aMenuItem = new Mock<MenuItem>();
                aMenuItem.Setup(m => m.Price).Returns(new Random().Next(0, 100));
                someMenuItems.Add(aMenuItem.Object);
            }

            var aMenu = new Menu();
            aMenu.Items.AddRange(someMenuItems);

            Assert.AreEqual(someMenuItems.Count, aMenu.Items.Count, "The number of Items contained within the Menu is not correct!");
            foreach (MenuItem aMenuItem in someMenuItems)
            {
                Assert.Contains(aMenuItem, aMenu.Items, "Invalid Menu Item was found within the Menu!");
            }
        }
        public void IsMenuPriceCorrectAsLongItContainsOneSingleMenuItemTest()
        {
            var aMenuItem = new Mock<MenuItem>();
            aMenuItem.Setup(m => m.Price).Returns(2);

            var aMenu = new Menu();
            aMenu.Items.Add(aMenuItem.Object);

            Assert.AreEqual(aMenuItem.Object.Price, aMenu.Price, "The Price of the Menu is not correct!");
        }
        public void IsMenuPriceCorrectAsLongItContainsMultipleMenuItemsTest()
        {
            var someMenuItems = new List<MenuItem>();
            decimal expectedMenuItemPrice = 0;
            for (int idx = 0; idx < new Random().Next(2, 100); idx++)
            {
                var aMenuItem = new Mock<MenuItem>();
                aMenuItem.Setup(m => m.Price).Returns(new Random().Next(0, 50));
                expectedMenuItemPrice += aMenuItem.Object.Price;
                someMenuItems.Add(aMenuItem.Object);
            }

            var aMenu = new Menu();
            aMenu.Items.AddRange(someMenuItems);

            Assert.AreEqual(expectedMenuItemPrice, aMenu.Price, "The Price of the Menu is not correct!");
        }