コード例 #1
0
        public void ReportTests()
        {
            string directory = Environment.CurrentDirectory;
            string fileName  = "sales_report.txt";
            string fullPath  = Path.Combine(directory, fileName);

            File.Delete(fullPath); //deletes the pevious file in order to start a new report file to test.
            VendingMachine vmTest1 = new VendingMachine();

            vmTest1.BuyItem("A1");
            string value = "";

            using (StreamReader sr = new StreamReader(fullPath))
            {
                value = sr.ReadLine();
            }
            Assert.AreEqual("Potato Crisps|1", value, "After buying A1, report should say 'Potato Crisps|1'");

            vmTest1.BuyItem("A1");
            using (StreamReader sr = new StreamReader(fullPath))
            {
                value = sr.ReadLine();
            }
            Assert.AreEqual("Potato Crisps|2", value, "After buying A1 twice, new report should say 'Potato Crisps|2'");

            vmTest1.BuyItem("A1");
            using (StreamReader sr = new StreamReader(fullPath))
            {
                value = sr.ReadLine();
            }
            Assert.AreEqual("Potato Crisps|3", value, "After buying A1 three times, new report should say 'Potato Crisps|3'");

            vmTest1.BuyItem("A1");
        }
コード例 #2
0
        public void VendingTest()
        {
            VendingMachine vmTest = new VendingMachine();

            vmTest.BuyItem("A1");
            var item1 = vmTest.GetInventoryItem("A1");

            Assert.AreEqual("4", item1.Quantity.ToString());
            Assert.AreEqual(1, vmTest.purchasedInventory.Count, "purchasedInventory list should contain 1 object");

            vmTest.BuyItem("A1");
            Assert.AreEqual("3", item1.Quantity.ToString());
            Assert.AreEqual(2, vmTest.purchasedInventory.Count, "purchasedInventory list should contain 2 objects");

            vmTest.BuyItem("A1");
            Assert.AreEqual("2", item1.Quantity.ToString());
            Assert.AreEqual(3, vmTest.purchasedInventory.Count, "purchasedInventory list should contain 3 objects");

            vmTest.BuyItem("A1");
            Assert.AreEqual("1", item1.Quantity.ToString());
            Assert.AreEqual(4, vmTest.purchasedInventory.Count, "purchasedInventory list should contain 4 objects");

            vmTest.BuyItem("A1");
            Assert.AreEqual("0", item1.Quantity.ToString());
            Assert.AreEqual(5, vmTest.purchasedInventory.Count, "purchasedInventory list should contain 5 objects");

            vmTest.BuyItem("A1");
            Assert.AreEqual("SOLD OUT", item1.Quantity.ToString());
            Assert.AreEqual(5, vmTest.purchasedInventory.Count, "purchasedInventory list should contain 5 objects");

            vmTest.Money.FeedMoney(10);
            vmTest.MakeChange();
            Assert.AreEqual(0, vmTest.purchasedInventory.Count);
        }
コード例 #3
0
        /// <summary>
        /// Menu for selecting a product from a display
        /// </summary>
        public void ProductSelection()
        {
            bool exit = false;

            while (!exit)
            {
                Console.Clear();
                VendingMachineContents();
                Console.WriteLine($"Current Balance: {_vm.Money.Balance.ToString("C")}");
                Console.WriteLine("What would you like to purchase today?");
                Console.WriteLine("Enter Q to return to previous menu");
                Console.WriteLine("Input Item Symbol: \n");
                string buyItem = Console.ReadLine();
                var    inv     = _vm.GetInventoryItem(buyItem);

                if (buyItem.ToUpper() == "Q")
                {
                    exit = true;
                }
                else if (_vm.inventory.Contains(inv))
                {
                    if (inv.Quantity > 0)
                    {
                        if (_vm.Money.Balance > inv.Price)
                        {
                            _vm.BuyItem(buyItem);
                            Console.WriteLine($"{inv.Name} has been dispensed to you.");
                            Console.WriteLine("Press Enter to add another item, or hit Q to return to the previous menu");
                            Console.ReadKey();
                        }
                        else
                        {
                            Console.WriteLine("You do not have enough money.");
                            Console.ReadKey();
                        }
                    }
                    else
                    {
                        Console.WriteLine("SOLD OUT");
                        Console.ReadKey();
                    }
                }
                else
                {
                    Console.WriteLine("Invalid Selection.");
                    Console.ReadKey();
                }
            }
        }