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(); }
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); }
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); }
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); }
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(); }
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(); }
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); }
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); }
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); }
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(); }
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); } }
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); } }