Exemple #1
0
        public async void Can_GetItems_With_Order_Test()
        {
            //Arrange
            FileHandler handler = new FileHandler();

            handler.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\inventory.csv";
            handler.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\OrderExist.csv";
            Item t1 = new Item {
                ID = 1, Name = "Mouse", Price = 200.0f, Quantity = 16
            };
            Item t2 = new Item {
                ID = 2, Name = "Ram", Price = 2500.0f, Quantity = 6
            };
            Item t3 = new Item {
                ID = 3, Name = "Keyboard", Price = 800.0f, Quantity = 5
            };
            IInventoryProcessor invProc = new InventoryProcessor(handler);
            IOrderProcessor     ordProc = new OrderProcessor(handler);

            invProc.OrderProdcessor = ordProc;

            //Act
            var result = await invProc.GetItems();

            //Assert
            Assert.NotNull(result);
            Assert.IsType <Dictionary <string, Item> >(result);
            Assert.Equal(t1, result["1"], new ItemComparer());
            Assert.Equal(t2, result["2"], new ItemComparer());
            Assert.Equal(t3, result["3"], new ItemComparer());
        }
        ///<summary>
        /// Creates Input, View and Interaction components:
        /// Creates different move processors
        /// for each character on board, registers them in controllers.
        /// Creates interactors and passes created level and view to them.
        /// </summary>
        public void InvokeState()
        {
            var level     = levelFactory.CreateLevel();
            var inputLoop = new InputLoop();
            var playView  = new ConsolePlayView();

            var playerMoveInteractor = new PlayerMoveInteractor(level, playView);
            var mobMoveInteractor    = new MobMoveInteractor(level, playView);
            var saveGameInteractor   = new SaveGameInteractor(level);
            var exitGameInteractor   = new ExitGameInteractor(level);
            var inventoryInteractor  = new InventoryInteractor(level, playView);

            var moveProcessor            = new MoveProcessor(playerMoveInteractor);
            var saveAndExitGameProcessor = new SaveAndExitGameProcessor(exitGameInteractor, saveGameInteractor);
            var inventoryProcessor       = new InventoryProcessor(inventoryInteractor);

            var keyboardController = new KeyboardController(level, OfflinePlayerLogin);
            var tickController     = new TickController();

            keyboardController.AddInputProcessor(moveProcessor);
            keyboardController.AddInputProcessor(saveAndExitGameProcessor);
            keyboardController.AddInputProcessor(inventoryProcessor);

            inputLoop.AddUpdatable(keyboardController);
            inputLoop.AddFixedUpdatable(tickController);

            if (!level.ContainsPlayer(OfflinePlayerLogin))
            {
                level.AddPlayerAtEmpty(OfflinePlayerLogin);
            }

            level.CurrentPlayer = level.GetPlayer(OfflinePlayerLogin);

            var mobs = level.Mobs;

            foreach (var mob in mobs)
            {
                var mobMoveProcessor = new MobMoveProcessor(mob, mobMoveInteractor);
                tickController.AddTickProcessor(mobMoveProcessor);
                mob.OnDie += (sender, args) =>
                {
                    level.Mobs.Remove(mob);
                    tickController.RemoveTickProcessor(mobMoveProcessor);
                };
            }

            level.CurrentPlayer.OnDie += (sender, args) =>
            {
                inputLoop.Stop();
                saveGameInteractor.DeleteSaving();
            };

            exitGameInteractor.OnExit += (sender, player) =>
            {
                inputLoop.Stop();
            };

            playView.Draw(level);
            inputLoop.Start();
        }
Exemple #3
0
        public async void Cannot_SaveOrder_As_Amount_Is_Wrong_Tests()
        {
            //Arrange
            FileHandler handler = new FileHandler();

            handler.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\inventory.csv";
            handler.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\orders.csv";
            IOrderProcessor     oproc   = new OrderProcessor(handler);
            IInventoryProcessor invproc = new InventoryProcessor(handler);

            oproc.InventoryProcessor = invproc;
            Order order = new Order {
                Amount = 100.0f, Item = new Item {
                    ID = 1
                }, Quantity = 2
            };
            string expectedErrorMsg = $"Your Order submission is unsuccessful, As order amount is wrong it needs to be $400.00";

            //Act
            Func <Task> ofct = () => oproc.SaveOrder(order);

            //Assert
            var ex = await Assert.ThrowsAsync <Exception>(ofct);

            Assert.Equal(expectedErrorMsg, ex.Message);
        }
Exemple #4
0
        public async void Can_SaveOrder_Tests()
        {
            //Arrange
            FileHandler handler = new FileHandler();

            handler.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\inventory.csv";
            handler.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\orders.csv";
            IOrderProcessor     oproc   = new OrderProcessor(handler);
            IInventoryProcessor invproc = new InventoryProcessor(handler);

            oproc.InventoryProcessor = invproc;
            Order order = new Order {
                Amount = 400.0f, Item = new Item {
                    ID = 1
                }, Quantity = 2
            };
            var    orders     = (await oproc.GetOrders());
            int    newID      = orders.Values.Max(o => o.OID) + 1;
            string successMsg = "Your Order submission is successful.";

            //Act
            string message = await oproc.SaveOrder(order);

            //Assert
            var porders = await oproc.GetOrders();

            var dorders = porders.Values.Except(orders.Values, new OrderComparer()).FirstOrDefault();

            order.OID = newID;
            Assert.NotNull(dorders);
            Assert.IsType <Order>(dorders);
            Assert.Equal(order, dorders, new OrderComparer());
            Assert.Equal(successMsg, message);
        }
Exemple #5
0
        public async void Cannot_SaveOrder_As_Item_Quantity_Is_UnAvailable_Tests()
        {
            //Arrange
            FileHandler handler = new FileHandler();

            handler.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\inventory.csv";
            handler.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\orders.csv";
            IOrderProcessor     oproc   = new OrderProcessor(handler);
            IInventoryProcessor invproc = new InventoryProcessor(handler);

            oproc.InventoryProcessor = invproc;
            Order order = new Order {
                Amount = 400.0f, Item = new Item {
                    ID = 1
                }, Quantity = 50
            };
            string expectedErrorMsg = "Your Order submission is unsuccessful, Due to insufficient inventory of item.";

            //Act
            Func <Task> ofct = () => oproc.SaveOrder(order);

            //Assert
            var ex = await Assert.ThrowsAsync <Exception>(ofct);

            Assert.Equal(expectedErrorMsg, ex.Message);
        }
Exemple #6
0
        public async void Cannot_SaveOrder_As_File_Doesnot_Exist_Tests()
        {
            //Arrange
            FileHandler handler = new FileHandler();

            handler.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\inventory.csv";
            handler.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\ordersnotexist.csv";
            IOrderProcessor     oproc   = new OrderProcessor(handler);
            IInventoryProcessor invproc = new InventoryProcessor(handler);

            oproc.InventoryProcessor = invproc;
            Order order = new Order {
                Amount = 400.0f, Item = new Item {
                    ID = 1
                }, Quantity = 2
            };
            string expectedErrorMsg = "System error with orders.csv file. Please contact your adminstrator for further assistance.";

            //Act
            Func <Task> ofct = () => oproc.SaveOrder(order);

            //Assert
            var ex = await Assert.ThrowsAsync <Exception>(ofct);

            Assert.Equal(expectedErrorMsg, ex.Message);
        }
        public void InvokeState()
        {
            var playView = new ConsolePlayView();

            var level = client.Login(login, sessionId);

            if (level == null)
            {
                throw new ArgumentException("Login already exists.");
            }

            var inputLoop = new InputLoop();

            var playerMoveInteractor  = new NetworkPlayerMoveInteractor(level, playView);
            var mobMoveInteractor     = new NetworkMobMoveInteractor(level, playView);
            var exitGameInteractor    = new ExitGameInteractor(level);
            var inventoryInteractor   = new InventoryInteractor(level, playView);
            var spawnPlayerInteractor = new SpawnPlayerInteractor(level, playView);

            var moveProcessor      = new MoveProcessor(playerMoveInteractor);
            var exitGameProcessor  = new ExitGameProcessor(exitGameInteractor);
            var inventoryProcessor = new InventoryProcessor(inventoryInteractor);

            var keyboardController = new KeyboardController(level, login);

            keyboardController.AddInputProcessor(client);

            keyboardController.AddInputProcessor(exitGameProcessor);

            client.AddInputProcessor(moveProcessor);
            client.AddInputProcessor(exitGameProcessor);
            client.AddInputProcessor(inventoryProcessor);

            client.SetMobInteractor(mobMoveInteractor);
            client.SetPlayerMoveInteractor(playerMoveInteractor);
            client.SetSpawnPlayerInteractor(spawnPlayerInteractor);

            inputLoop.AddUpdatable(keyboardController);
            inputLoop.AddUpdatable(client);

            level.CurrentPlayer = level.GetPlayer(login);

            level.CurrentPlayer.OnDie += (sender, args) =>
            {
                inputLoop.Stop();
            };

            exitGameInteractor.OnExit += (sender, player) =>
            {
                inputLoop.Stop();
            };

            playView.Draw(level);
            inputLoop.Start();
        }
Exemple #8
0
        public void InvokeState()
        {
            var level     = levelFactory.CreateLevel();
            var inputLoop = new InputLoop();
            var playView  = new VoidView();

            var inputController = new ServerInputController(level, newSessionId, inputService);

            var exitGameInteractor   = new ExitGameInteractor(level, inputController);
            var playerMoveInteractor = new PlayerMoveInteractor(level, playView, inputController);
            var mobMoveInteractor    = new MobMoveInteractor(level, playView, inputController);
            var inventoryInteractor  = new InventoryInteractor(level, playView);

            levelFactory.SetPlayerFactory(new NetworkPlayerFactory(exitGameInteractor));

            var moveProcessor      = new MoveProcessor(playerMoveInteractor);
            var exitGameProcessor  = new ExitGameProcessor(exitGameInteractor);
            var inventoryProcessor = new InventoryProcessor(inventoryInteractor, inputController);

            var tickController = new TickController();

            inputController.AddInputProcessor(moveProcessor);
            inputController.AddInputProcessor(inventoryProcessor);
            inputController.AddInputProcessor(exitGameProcessor);

            inputLoop.AddFixedUpdatable(tickController);
            inputLoop.AddUpdatable(inputController);

            level.CurrentPlayer = new Player(DummyLogin, level, new Position(-1, -1));

            var mobs = level.Mobs;

            foreach (var mob in mobs)
            {
                var mobMoveProcessor = new MobMoveProcessor(mob, mobMoveInteractor);
                tickController.AddTickProcessor(mobMoveProcessor);
                mob.OnDie += (sender, args) =>
                {
                    level.Mobs.Remove(mob);
                    tickController.RemoveTickProcessor(mobMoveProcessor);
                };
            }

            inputLoop.Start();
        }
Exemple #9
0
        public async void Cannot_GetOrders_As_File_Doesnot_Exist_Test()
        {
            //Arrange
            FileHandler handler = new FileHandler();

            handler.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\inventory.csv";
            handler.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\ordernotexist.csv";
            IOrderProcessor     oproc   = new OrderProcessor(handler);
            IInventoryProcessor invproc = new InventoryProcessor(handler);
            string expectedErrorMsg     = "System error with orders.csv file. Please contact your adminstrator for further assistance.";

            //Act
            Func <Task <Dictionary <string, Order> > > ofct = () => oproc.GetOrders();

            //Assert
            var ex = await Assert.ThrowsAsync <Exception>(ofct);

            Assert.Equal(expectedErrorMsg, ex.Message);
        }
Exemple #10
0
        public async void Cannot_GetOrders_with_emptyfiles_Test()
        {
            //Arrange
            FileHandler handler = new FileHandler();

            handler.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\inventory.csv";
            handler.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\eorders.csv";
            IOrderProcessor     oproc   = new OrderProcessor(handler);
            IInventoryProcessor invproc = new InventoryProcessor(handler);
            string expectedErrorMsg     = "No orders record present in the OrderFile.";

            //Act
            Func <Task <Dictionary <string, Order> > > ofct = () => oproc.GetOrders();

            //Assert
            var ex = await Assert.ThrowsAsync <Exception>(ofct);

            Assert.Equal(expectedErrorMsg, ex.Message);
        }
Exemple #11
0
        public async void Cannot_GetItems_With_emptyfile_Test()
        {
            //Arrange
            FileHandler handler = new FileHandler();

            handler.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\einventory.csv";
            handler.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\orders.csv";
            IInventoryProcessor invProc = new InventoryProcessor(handler);
            IOrderProcessor     ordProc = new OrderProcessor(handler);

            invProc.OrderProdcessor = ordProc;
            string expectedErrorMsg = "No items record present in the inventory.";

            //Act
            Func <Task <Dictionary <string, Item> > > ifct = () => invProc.GetItems();

            //Assert
            var ex = await Assert.ThrowsAsync <Exception>(ifct);

            Assert.Equal(expectedErrorMsg, ex.Message);
        }
Exemple #12
0
        static void Main(string[] args)
        {
            Console.WriteLine("Enter Ip Address");
            var ip = Console.ReadLine();

            Console.WriteLine("Enter TCP Port");
            var port = Convert.ToInt32(Console.ReadLine());

            InventoryProcessor inventoryProcessor = new InventoryProcessor();

            if (inventoryProcessor.Connect(ip, port))
            {
                Console.WriteLine("\nConnected Successfully");
            }
            else
            {
                Console.WriteLine("\nError in Connection");
            }

            Console.ReadLine();
        }
Exemple #13
0
 static void Main(string[] args)
 {
     try
     {
         FileHandler fh = new FileHandler();
         fh.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\inventory.csv";
         fh.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\orders.csv";
         var invproc = new InventoryProcessor(fh);
         invproc.OrderProdcessor = new OrderProcessor(fh)
         {
             InventoryProcessor = invproc
         };
         var items = invproc.GetItems().Result;
         foreach (var item in items.Values)
         {
             Console.WriteLine($"{item.ID}.{item.Name}({item.Quantity}): {item.Price.ToString("c")}");
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Exemple #14
0
        public async void Can_GetOrders_Test()
        {
            //Arrange
            FileHandler handler = new FileHandler();

            handler.ItemCSVPath  = @"D:\Upwork\Assignment\VendingMachineSln\inventory.csv";
            handler.OrderCSVPath = @"D:\Upwork\Assignment\VendingMachineSln\OrderExist.csv";
            IOrderProcessor     oproc   = new OrderProcessor(handler);
            IInventoryProcessor invproc = new InventoryProcessor(handler);
            Order ord1 = new Order {
                OID = 1, Amount = 400.0f, Item = new Item {
                    ID = 1
                }, Quantity = 2
            };
            Order ord2 = new Order {
                OID = 2, Amount = 10000.0f, Item = new Item {
                    ID = 2
                }, Quantity = 4
            };
            Order ord3 = new Order {
                OID = 3, Amount = 400.0f, Item = new Item {
                    ID = 1
                }, Quantity = 2
            };

            //Act
            var result = await oproc.GetOrders();

            //Assert
            Assert.NotNull(result);
            Assert.NotEmpty(result);
            Assert.IsType <Dictionary <string, Order> >(result);
            Assert.Equal(ord1, result["1"], new OrderComparer());
            Assert.Equal(ord2, result["2"], new OrderComparer());
            Assert.Equal(ord3, result["3"], new OrderComparer());
        }
        public void btnSearch_Click(object sender, EventArgs e)
        {
            string text = tbSearch.Text;
            int    i    = 0;

            count = 0;

            if (Member.CharacterList.Count != i)
            {
                pnlHead.Controls.Clear();
                pnlBody.Controls.Clear();
                while (i < Member.CharacterList.Count)
                {
                    Member.CharacterList[i].ItemList.Clear();
                    Member.CharacterList[i].OddList.Clear();
                    i++;
                }
                Member.CharacterList.Clear();
            }

            try
            {
                if (text != "")
                {
                    label1.Show();
                    pnlBody.Visible = false;
                    MemberProcessor.SearchDestinyPlayer(text);
                    InventoryProcessor.GetItems();

                    Character();
                    //btnApi.Visible = true;
                }
                else
                {
                    var lbl = new Label();
                    lbl.BackColor = Color.Transparent;
                    lbl.ForeColor = Color.WhiteSmoke;
                    lbl.Font      = new Font(new FontFamily("Arial"), 24, FontStyle.Bold);
                    lbl.Location  = new Point(530, 150);
                    lbl.AutoSize  = true;
                    lbl.Tag       = "lblError";
                    lbl.Text      = "Please enter a player";
                    lbl.TextAlign = ContentAlignment.MiddleCenter;
                    pnlBody.Controls.Add(lbl);
                }
                label1.Hide();
                pnlBody.Visible = true;
            }
            catch (Exception)
            {
                var lbl = new Label();
                lbl.BackColor = Color.Transparent;
                lbl.ForeColor = Color.WhiteSmoke;
                lbl.Font      = new Font(new FontFamily("Arial"), 24, FontStyle.Bold);
                lbl.Location  = new Point(400, 150);
                lbl.AutoSize  = true;
                lbl.Tag       = "lblError";
                lbl.Text      = "We weren't able to find this player,\n please try again.";
                lbl.TextAlign = ContentAlignment.MiddleCenter;
                pnlBody.Controls.Add(lbl);
            }
        }