Esempio n. 1
0
        public void Purchase_ThrowsInsufficientFunds()
        {
            //Arrange
            VendingMachineItem testItem = new VendingMachineItem("Test Chips", 1.25M);
            Dictionary <string, List <VendingMachineItem> > inventory = new Dictionary <string, List <VendingMachineItem> >()
            {
                { "A1", new List <VendingMachineItem>()
                  {
                      testItem
                  } }
            };
            VendingMachine vm = new VendingMachine(inventory);

            //Act
            vm.Purchase("A1");
        }
Esempio n. 2
0
        public void GetItemAtSlot_InvalidSlot()
        {
            //Arrange
            VendingMachineItem testItem = new VendingMachineItem("Test Chips", 1.25M);
            Dictionary <string, List <VendingMachineItem> > inventory = new Dictionary <string, List <VendingMachineItem> >()
            {
                { "A1", new List <VendingMachineItem>()
                  {
                      testItem
                  } }
            };
            VendingMachine vm = new VendingMachine(inventory);

            //Act
            VendingMachineItem itemAtSlot = vm.GetItemAtSlot("A2");
        }
Esempio n. 3
0
        public void GetQuantityRemaining_ThrowsInvalidSlot()
        {
            //Arrange
            VendingMachineItem testItem = new VendingMachineItem("Test Chips", 1.25M);
            Dictionary <string, List <VendingMachineItem> > inventory = new Dictionary <string, List <VendingMachineItem> >()
            {
                { "A1", new List <VendingMachineItem>()
                  {
                      testItem
                  } }
            };
            VendingMachine vm = new VendingMachine(inventory);

            //Act
            int quantityRemaining = vm.GetQuantityRemaining("A2");
        }
Esempio n. 4
0
        public void GetItemAtSlot_OutOfStock()
        {
            //Arrange
            VendingMachineItem testItem = new VendingMachineItem("Test Chips", 1.25M);
            Dictionary <string, List <VendingMachineItem> > inventory = new Dictionary <string, List <VendingMachineItem> >()
            {
                { "A1", new List <VendingMachineItem>() }
            };
            VendingMachine vm = new VendingMachine(inventory);

            //Act
            VendingMachineItem itemAtSlot = vm.GetItemAtSlot("A1");

            //Assert
            Assert.AreEqual(null, itemAtSlot);
        }
Esempio n. 5
0
        public void DispenseItem_Test_ItemSoldOut()
        {
            //arrange
            string         slotTag     = "B1";
            VendingMachine testMachine = new VendingMachine();

            testMachine.Restock(new List <string>(sampleStockFileLines));
            testMachine.TakeMoney(40.00m);
            //act
            while (testMachine.Slots[slotTag].Count > 0)
            {
                testMachine.DispenseItem(slotTag);
            }

            //act
            VendingMachineItem soda = testMachine.DispenseItem(slotTag);
        }
Esempio n. 6
0
        public void CanWeGetProductWithSlotIdentifier()
        {
            List <VendingMachineItem> items = new List <VendingMachineItem>()
            {
                new VendingMachineItem("chip", "dkd", 4.0M, "sfa")
            };
            // Arrange
            VendingMachine vm = new VendingMachine(items);
            // Act
            decimal balance = vm.FeedMoney(4.00M);

            VendingMachineItem vmi = vm.SelectProduct("sfa");

            // Assert
            Assert.IsNotNull(vmi);
            Assert.AreEqual(0, vm.Balance);
            Assert.AreEqual(4, vmi.Quantity);
        }
Esempio n. 7
0
        public void GetQuantityRemaining_ReturnsValidQuantity()
        {
            //Arrange
            VendingMachineItem testItem = new VendingMachineItem("Test Chips", 1.25M);
            Dictionary <string, List <VendingMachineItem> > inventory = new Dictionary <string, List <VendingMachineItem> >()
            {
                { "A1", new List <VendingMachineItem>()
                  {
                      testItem
                  } }
            };
            VendingMachine vm = new VendingMachine(inventory);

            //Act
            int quantityRemaining = vm.GetQuantityRemaining("A1");

            //Assert
            Assert.AreEqual(1, quantityRemaining);
        }
Esempio n. 8
0
        public void DispenseItem_Test()
        {
            //arrange
            string         slotTag     = "B1";
            VendingMachine testMachine = new VendingMachine();

            testMachine.Restock(new List <string>(sampleStockFileLines));//restock from arbitrary list

            testMachine.TakeMoney(100.00m);

            //act
            VendingMachineItem soda = testMachine.DispenseItem(slotTag);

            //assert
            Assert.IsTrue(soda is Drink, "The machine dispensed the wrong item!");
            Assert.AreEqual("Sprite", soda.Name, "The Machine dispensed a drink, but it was not the right drink!");
            Assert.AreEqual(97.25m, testMachine.CurrentCredit, "The price of the soda was not deducted from the current Credit!");
            Assert.AreEqual(testMachine.Slots[slotTag].Capacity - 1, testMachine.Slots[slotTag].Count,
                            $"The quantity of items in slot {slotTag} didn't change after we tried to dispense");
        }
Esempio n. 9
0
        public void Purchase_ValidPurchase()
        {
            //Arrange
            VendingMachineItem testItem = new VendingMachineItem("Test Chips", 1.25M);
            Dictionary <string, List <VendingMachineItem> > inventory = new Dictionary <string, List <VendingMachineItem> >()
            {
                { "A1", new List <VendingMachineItem>()
                  {
                      testItem
                  } }
            };
            VendingMachine vm = new VendingMachine(inventory);

            vm.FeedMoney(2);

            //Act
            VendingMachineItem purchasedItem = vm.Purchase("A1");

            //Assert
            Assert.IsNotNull(purchasedItem);
            Assert.AreEqual(0, inventory["A1"].Count);
            Assert.AreEqual(0.75M, vm.CurrentBalance);
        }
        public void VendingMachineItem_Constructor()
        {
            // Arrange
            string   fakeItemName  = "My Vending Machine Item";
            decimal  fakeItemPrice = 10.0M;
            ItemType fakeItemType  = ItemType.Candy;
            int      fakeItemSlot  = 4;

            // Act
            VendingMachineItem result = new VendingMachineItem(fakeItemName, fakeItemPrice, fakeItemType, fakeItemSlot);

            // Assert
            // Item.Quantity
            Assert.AreEqual(5, result.Quantity);
            // Item.Name
            Assert.AreEqual("My Vending Machine Item", result.Name);
            // Item.Slot
            Assert.AreEqual(fakeItemSlot, result.Slot);
            // Item.Price
            Assert.AreEqual(10M, result.Price);
            // Item.Type
            Assert.AreEqual(ItemType.Candy, result.Type);
        }
Esempio n. 11
0
        public void SelectProduct()
        {
            Dictionary <string, VendingMachineItem> testAllItems = new Dictionary <string, VendingMachineItem>();
            VendingMachine     test     = new VendingMachine();
            VendingMachineItem testItem = new VendingMachineItem("Potato Crisps", 3.05);

            testAllItems.Add("A1", testItem);

            test.AllItems = testAllItems;
            int result = test.SelectProduct("A1");

            Assert.AreEqual(2, result);

            test.FeedMoney(10);
            result = test.SelectProduct("A1");
            Assert.AreEqual(1, result);

            result = test.SelectProduct("Garbage");
            Assert.AreEqual(-1, result);

            testItem.Quantity = 0;
            result            = test.SelectProduct("A1");
            Assert.AreEqual(0, result);
        }
        /// <summary>
        /// Prompts the user to select a product and purchases it.
        /// </summary>
        /// <param name="vm"></param>
        /// <returns></returns>
        public VendingMachineItem DisplaySelectProduct(VendingMachine vm)
        {
            bool tryAgain = true;
            VendingMachineItem purchasedItem = null;

            while (tryAgain == true)
            {
                Console.Clear();
                string code = this.GetString("Please enter product code: ").ToUpper();
                try
                {
                    purchasedItem = vm.PurchaseItem(code);
                    tryAgain      = false;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.ReadLine();
                    return(null);
                }
            }

            return(purchasedItem);
        }
        public override void Run()
        {
            string      error       = string.Empty;
            AuditWriter auditWriter = new AuditWriter();

            while (true)
            {
                Console.Clear();
                Console.Write("Errors: ");
                Console.WriteLine(error);
                Console.WriteLine("1) Feed Money");
                Console.WriteLine("2) Select Product");
                Console.WriteLine("3) Finish Transaction");
                Console.WriteLine("B) Back");
                Console.WriteLine();
                Console.WriteLine($"Current money provided: ${vm.CurrentBal}");
                string purchaseChoice = this.GetString("> Selection: ").ToLower();

                if (purchaseChoice == "1")
                {
                    decimal oldBal = vm.CurrentBal;

                    this.DisplayFeedMoney(vm);
                    auditWriter.WriteAudit(vm.CurrentBal, "FEED MONEY", oldBal);

                    error = string.Empty;
                }
                else if (purchaseChoice == "2")
                {
                    VendingMachineItem purchasedItem = this.DisplaySelectProduct(vm);
                    if (purchasedItem != null)
                    {
                        decimal oldBal = vm.CurrentBal;


                        this.purchased.Add(purchasedItem);

                        error = string.Empty;

                        auditWriter.WriteAudit(vm.CurrentBal, $"{purchasedItem.Name} {purchasedItem.Slot}", oldBal);
                    }
                    else
                    {
                        error = "Please try again.";
                    }
                }
                else if (purchaseChoice == "3")
                {
                    if (this.purchased.Count > 0)
                    {
                        decimal oldBal = vm.CurrentBal;

                        this.FinishTransaction(vm);

                        error = string.Empty;

                        auditWriter.WriteAudit(vm.CurrentBal, "GIVE CHANGE", oldBal);


                        foreach (VendingMachineItem purchase in this.purchased)
                        {
                            Console.WriteLine(purchase.MakeFoodSound());
                        }

                        this.WriteSales(vm);

                        this.purchased.RemoveRange(0, this.purchased.Count - 1);

                        Console.ReadLine();

                        return;
                    }
                    else
                    {
                        error = "You havent purchased anything silly!";
                    }
                }
                else if (purchaseChoice == "b")
                {
                    break;
                }
                else
                {
                    error = "Invalid option.";
                }

                Console.Clear();
            }
        }
Esempio n. 14
0
 public void Initialize()
 {
     vms       = new VendingMachineSlot();
     bubbleGum = new VendingMachineItem("Bubble Gum", 2.00M);
     candyBar  = new VendingMachineItem("Candy Bar", 2.50M);
 }
        public static int PlaceNewVendingMachine(int x, int y, int type, int style, int direction = 0)
        {
            try
            {
                Point16 point = new Point16(x, y);
                TileObjectData.OriginToTopLeft(type, style, ref point);

                VendingMachineItem toPlace = (Main.player[Main.myPlayer].inventory[Main.player[Main.myPlayer].selectedItem].modItem) as VendingMachineItem;
                if (toPlace == null)
                {
                    return(399);
                }
                if (toPlace.hasShop && (toPlace.npcType == null || toPlace.npcType == ""))
                {
                    toPlace.npcType = SoulOfNPC.ItemToTag(toPlace.item);
                }

                for (int i = 0; i < vm.Length; i++)
                {
                    if (vm[i] != null && vm[i].x == x && vm[i].y == y)
                    {
                        vm[i].setDefaults(point.X, point.Y, toPlace.npcType, toPlace.hasShop);
                        if (Main.netMode != 0)
                        {
                            ModPacket pk = ModLoader.GetMod("VendingMachines").GetPacket();
                            pk.Write((byte)1);
                            pk.Write((short)i);
                            TagIO.Write(vm[i].Save(), pk);
                            pk.Send();
                        }
                        return(i);
                    }
                }

                for (int i = 0; i < vm.Length; i++)
                {
                    if (vm[i] == null)
                    {
                        vm[i] = new VendingMachineData();
                        vm[i].setDefaults(point.X, point.Y, toPlace.npcType, toPlace.hasShop);
                        if (Main.netMode != 0)
                        {
                            ModPacket pk = ModLoader.GetMod("VendingMachines").GetPacket();
                            pk.Write((byte)1);
                            pk.Write((short)i);
                            TagIO.Write(vm[i].Save(), pk);
                            pk.Send();
                        }
                        return(i);
                    }
                    else if (vm[i].isClear())
                    {
                        vm[i].setDefaults(point.X, point.Y, toPlace.npcType, toPlace.hasShop);
                        if (Main.netMode != 0)
                        {
                            ModPacket pk = ModLoader.GetMod("VendingMachines").GetPacket();
                            pk.Write((byte)1);
                            pk.Write((short)i);
                            TagIO.Write(vm[i].Save(), pk);
                            pk.Send();
                        }
                        return(i);
                    }
                }
                return(399);
            }catch (Exception e)
            {
                Main.NewText(e.ToString());
                return(399);
            }
        }
 public void Initialize()
 {
     newItem = new VendingMachineItem();
 }
Esempio n. 17
0
 public void TestMessage4()
 {
     item = new VendingMachineItem("Chips", 1.50M, "Chip");
     Assert.AreEqual("Chew Chew, Yum!", item.SetMessage("Gum"));
 }
 public void Initialize()
 {
     newObject = new VendingMachine(@"C:\Users\georgd\georgdeckner-c-sharp-material\team5-c-sharp-week4-pair-exercises\19_Mini-Capstone\etc\vendingmachine.csv");
     newItem   = new VendingMachineItem();
 }
Esempio n. 19
0
        public void ConsumedMessageTest_C_Should_Be_Glug_Glug_2()
        {
            item = new VendingMachineItem("Cola", 1.25M, "C1");

            Assert.AreEqual("Glug Glug, Yum", item.ConsumedMessage);
        }
Esempio n. 20
0
        public void ConsumedMessageTest_C_Should_Be_Glug_Glug_1()
        {
            item = new VendingMachineItem("Mountain Melter", 1.50M, "C3");

            Assert.AreEqual("Glug Glug, Yum", item.ConsumedMessage);
        }
Esempio n. 21
0
        public void ConsumedMessageTest_B_Should_Be_Munch_Munch_2()
        {
            item = new VendingMachineItem("Cowtales", 1.50M, "B2");

            Assert.AreEqual("Munch Munch, Yum", item.ConsumedMessage);
        }
Esempio n. 22
0
        public void ConsumedMessageTest_A_Should_Be_Crunch_Crunch_2()
        {
            item = new VendingMachineItem("Stackers", 1.45M, "A2");

            Assert.AreEqual("Crunch Crunch, Yum", item.ConsumedMessage);
        }
Esempio n. 23
0
        public void ConsumedMessageTest_A_Should_Be_Crunch_Crunch()
        {
            item = new VendingMachineItem("Potato Crisps", 3.05M, "A1");

            Assert.AreEqual("Crunch Crunch, Yum", item.ConsumedMessage);
        }
Esempio n. 24
0
 public void TestQuanity()
 {
     item = new VendingMachineItem("Chips", 1.50M, "Chip");
     Assert.AreEqual(5, item.Quantity);
 }
        public void VendingMachineItemTestCreate()
        {
            VendingMachineItem vmi = new VendingMachineItem();

            Assert.IsNotNull(vmi);
        }
Esempio n. 26
0
        public void ConsumedMessageTest_D_Should_Be_Chew_Chew_()
        {
            item = new VendingMachineItem("Chiclets", 0.75M, "D3");

            Assert.AreEqual("Chew Chew, Yum", item.ConsumedMessage);
        }
Esempio n. 27
0
 private decimal CalculateTransactionAmount(VendingMachineItem selectedItem, int itemAmount) => ItemPriceMapping[selectedItem] * itemAmount;
Esempio n. 28
0
        public void ConsumedMessageTest_D_Should_Be_Chew_Chew_2()
        {
            item = new VendingMachineItem("Little League Chew", 0.95M, "D2");

            Assert.AreEqual("Chew Chew, Yum", item.ConsumedMessage);
        }
Esempio n. 29
0
        public void ConsumedMessageTest_B_Should_Be_Munch_Munch()
        {
            item = new VendingMachineItem("Moonpie", 1.80M, "B1");

            Assert.AreEqual("Munch Munch, Yum", item.ConsumedMessage);
        }
Esempio n. 30
0
 public void TestMessage3()
 {
     item = new VendingMachineItem("Chips", 1.50M, "Chip");
     Assert.AreEqual("Glug Glug, Yum!", item.SetMessage("Drink"));
 }