Пример #1
0
        public void T4()
        {
            // Arrange
            var viewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), new AddMarketViewModel());

            // Assert
            Assert.True(viewModel.TradeDetailsValidator.IsTradeValid);
        }
Пример #2
0
        public void T6()
        {
            // Arrange
            var viewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), new AddMarketViewModel());

            //
            var actual = viewModel.CloseDate;

            // Assert
            Assert.Equal(DateTime.Today, actual);
        }
Пример #3
0
        public void T0()
        {
            // Arrange
            var viewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), new AddMarketViewModel());

            // Act
            var actual = viewModel.Markets;

            // Assert
            Assert.Empty(actual);
        }
Пример #4
0
        public void T1()
        {
            // Arrange
            var addTradeViewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), new AddMarketViewModel());
            var viewModel         = new MainWindowViewModel(SubRunner, SubTradeManager, addTradeViewModel, SubPlot);

            // Act
            addTradeViewModel.ConfirmNewTradeCommand.Execute(null !);

            // Assert
            viewModel.TradeManager.Received(1).AddNewTrade(addTradeViewModel);
        }
Пример #5
0
        public void T5()
        {
            // Arrange
            var addTradeViewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), new AddMarketViewModel());
            var viewModel         = new MainWindowViewModel(SubRunner, SubTradeManager, addTradeViewModel, SubPlot);

            // Act
            var actual = addTradeViewModel.Strategies;

            // Assert
            Assert.Equal(viewModel.TradeFiltererViewModel.Strategies, actual);
        }
Пример #6
0
        public void T0()
        {
            // Arrange
            var runner            = SubRunner;
            var addTradeViewModel = new TradeDetailsViewModel(runner, new GetNameViewModel(), new AddMarketViewModel());
            var viewModel         = new MainWindowViewModel(runner, SubTradeManager, addTradeViewModel, SubPlot);

            // Act
            viewModel.RemoveTradeCommand.Execute(null !);

            // Assert
            runner.Received(1).RunForResult(viewModel, Arg.Any <Message>());
        }
Пример #7
0
        public void T0()
        {
            // Arrange
            var runner            = SubRunner;
            var addTradeViewModel = new TradeDetailsViewModel(runner, new GetNameViewModel(), new AddMarketViewModel());
            var viewModel         = new MainWindowViewModel(runner, SubTradeManager, addTradeViewModel, SubPlot);

            // Act
            viewModel.EditTradeCommand.Execute(null !);

            // Assert
            runner.Received(1).GetTradeDetails(addTradeViewModel);
        }
Пример #8
0
        public void T1()
        {
            // Arrange
            var runner             = SubRunner;
            var addMarketViewModel = new AddMarketViewModel();
            var viewModel          = new TradeDetailsViewModel(runner, new GetNameViewModel(), addMarketViewModel);

            // Act
            viewModel.AddNewMarketCommand.Execute(null !);

            // Assert
            runner.Received(1).GetNewMarket(addMarketViewModel, "Enter Market Details");
        }
Пример #9
0
        public void T1()
        {
            // Arrange
            var runner    = SubRunner;
            var getNameVm = new GetNameViewModel();
            var viewModel = new TradeDetailsViewModel(runner, getNameVm, new AddMarketViewModel());

            // Act
            viewModel.AddNewStrategyCommand.Execute(null !);

            // Assert
            runner.Received(1).GetNewName(getNameVm, "Enter Strategy Name");
        }
Пример #10
0
        public void T3()
        {
            // Arrange
            var viewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), new AddMarketViewModel());
            var catcher   = Catcher.Simple;

            viewModel.TradeAdded += catcher.Catch;

            // Act
            viewModel.ConfirmNewTradeCommand.Execute(null !);

            // Assert
            catcher.CaughtEmpty(viewModel);
        }
Пример #11
0
        public void T2()
        {
            // Arrange
            var getNameVm = new GetNameViewModel();

            getNameVm.Name = "test name";
            var viewModel = new TradeDetailsViewModel(SubRunner, getNameVm, new AddMarketViewModel());

            // Act
            viewModel.AddNewStrategyCommand.Execute(null !);

            // Assert
            Assert.Equal(string.Empty, getNameVm.Name);
        }
Пример #12
0
        public void T2()
        {
            // Arrange
            var addMarketViewModel = new AddMarketViewModel();

            addMarketViewModel.Name = "test name";
            var viewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), addMarketViewModel);

            // Act
            viewModel.AddNewMarketCommand.Execute(null !);

            // Assert
            Assert.Equal(string.Empty, addMarketViewModel.Name);
        }
Пример #13
0
        public void T3()
        {
            // Arrange
            var          addMarketViewModel = new AddMarketViewModel();
            const string testName           = "test name";
            var          viewModel          = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), addMarketViewModel);

            viewModel.AddNewMarketCommand.Execute(null !);
            addMarketViewModel.Name = testName;

            // Act
            addMarketViewModel.ConfirmMarketCommand.Execute(null !);

            // Assert
            Assert.Equal(testName, viewModel.Markets[^ 1].Name);
Пример #14
0
        private static Optional <Execution> GetCloseExecution(TradeDetailsViewModel tradeDetails)
        {
            var closeDateTime = new DateTime(tradeDetails.CloseDate.Year, tradeDetails.CloseDate.Month,
                                             tradeDetails.CloseDate.Day, tradeDetails.CloseTime.Hour, tradeDetails.CloseTime.Minute,
                                             tradeDetails.CloseTime.Second);

            var close        = new Execution(0, closeDateTime, 0);
            var fieldIsEmpty = false;

            tradeDetails.CloseLevel.IfExistsThen(x => { close.Level = x; })
            .IfEmpty(() => fieldIsEmpty = true);

            return(fieldIsEmpty ? Option.None <Execution>()
                                : Option.Some(close));
        }
Пример #15
0
        public void T3()
        {
            // Arrange
            var          getNameVm = new GetNameViewModel();
            const string testName  = "test name";
            var          viewModel = new TradeDetailsViewModel(SubRunner, getNameVm, new AddMarketViewModel());

            viewModel.AddNewStrategyCommand.Execute(null !);
            getNameVm.Name = testName;

            // Act
            getNameVm.ConfirmNewNameCommand.Execute(null !);

            // Assert
            Assert.Equal(testName, viewModel.Strategies[^ 1].Name);
Пример #16
0
        public void T1()
        {
            // Arrange
            var runner            = SubRunner;
            var addTradeViewModel = new TradeDetailsViewModel(runner, new GetNameViewModel(), new AddMarketViewModel());
            var viewModel         = new MainWindowViewModel(runner, SubTradeManager, addTradeViewModel, SubPlot);

            runner.RunForResult(viewModel, Arg.Is <Message>(m => m.Is(Messages.ConfirmClearAllTrades))).Returns(true);

            // Act
            viewModel.ClearCommand.Execute(null !);

            // Assert
            viewModel.TradeManager.Received(1).ClearAll();
        }
Пример #17
0
        public void T2()
        {
            // Arrange
            var runner            = SubRunner;
            var addTradeViewModel = new TradeDetailsViewModel(runner, new GetNameViewModel(), new AddMarketViewModel());

            addTradeViewModel.IsEditing = true;
            var viewModel = new MainWindowViewModel(runner, SubTradeManager, addTradeViewModel, SubPlot);

            // Act
            viewModel.AddNewTradeCommand.Execute(null !);

            // Assert
            Assert.False(addTradeViewModel.IsEditing);
        }
Пример #18
0
        public void T2()
        {
            // Arrange
            var runner            = SubRunner;
            var addTradeViewModel = new TradeDetailsViewModel(runner, new GetNameViewModel(), new AddMarketViewModel());
            var viewModel         = new MainWindowViewModel(runner, SubTradeManager, addTradeViewModel, SubPlot);

            runner.RunForResult(viewModel, Arg.Is <Message>(m => m.Is(Messages.ConfirmRemoveTrade))).Returns(false);

            // Act
            viewModel.RemoveTradeCommand.Execute(null !);

            // Assert
            viewModel.TradeManager.DidNotReceive().RemoveTrade();
        }
        public void T13()
        {
            // Arrange
            var viewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), new AddMarketViewModel())
            {
                SelectedMarket = TestMarket
            };

            viewModel.Open.Level = 150;
            viewModel.CloseLevel = Option.Some(100.0);

            // Act
            viewModel.High = Option.Some(100.0);

            // Assert
            Assert.True(viewModel.TradeDetailsValidator.HighHasError);
        }
Пример #20
0
        public void AddNewTrade(TradeDetailsViewModel tradeDetails)
        {
            var close = GetCloseExecution(tradeDetails);

            var openDateTime = new DateTime(tradeDetails.Open.Date.Year, tradeDetails.Open.Date.Month,
                                            tradeDetails.Open.Date.Day, tradeDetails.Open.Time.Hour, tradeDetails.Open.Time.Minute,
                                            tradeDetails.Open.Time.Second);

            var trade = new Trade(tradeDetails.SelectedMarket, tradeDetails.SelectedStrategy,
                                  new Levels(tradeDetails.Levels.Entry, tradeDetails.Levels.Stop, tradeDetails.Levels.Target),
                                  new Execution(tradeDetails.Open.Level, openDateTime, tradeDetails.Open.Size), close,
                                  (tradeDetails.High, tradeDetails.Low), tradeDetails.SelectedEntryOrderType);

            _unfilteredTrades.Add(trade);
            DataConnection.AddTrade(trade);
            UpdateDateRange(tradeDetails.Open.Date);
            FilterTrades(Filters);
        }
Пример #21
0
        public void T1()
        {
            // Arrange
            var          runner            = SubRunner;
            var          addTradeViewModel = new TradeDetailsViewModel(runner, new GetNameViewModel(), new AddMarketViewModel());
            var          viewModel         = new MainWindowViewModel(runner, SubTradeManager, addTradeViewModel, SubPlot);
            const double testEntry         = 666.66;
            var          testTrade         = TestOpenTrade;

            testTrade.Levels.Entry = testEntry;
            viewModel.TradeManager.SelectedTrade = testTrade;

            // Act
            viewModel.EditTradeCommand.Execute(null !);

            // Assert
            Assert.Equal(testEntry, addTradeViewModel.Levels.Entry);
        }
        public void T5()
        {
            // Arrange
            var viewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), new AddMarketViewModel())
            {
                SelectedMarket = TestMarket
            };

            viewModel.Levels.Stop   = 200;
            viewModel.Levels.Target = 100;
            viewModel.Open.Level    = 150;

            // Act
            viewModel.CloseLevel = Option.Some(200.00);

            // Assert
            Assert.True(viewModel.IsHighFixed);
        }
        public void T8()
        {
            // Arrange
            var viewModel = new TradeDetailsViewModel(SubRunner, new GetNameViewModel(), new AddMarketViewModel())
            {
                SelectedMarket = TestMarket
            };

            viewModel.Levels.Stop   = 100;
            viewModel.Levels.Target = 200;
            viewModel.Open.Level    = 150;
            viewModel.CloseLevel    = Option.Some(100.0);

            // Act
            viewModel.CloseLevel = Option.None <double>();

            // Assert
            Assert.IsType <Option.OptionNone <double> >(viewModel.High);
        }
Пример #24
0
        protected override void OnStartup(StartupEventArgs e)
        {
            EventManager.RegisterClassHandler(typeof(TextBox),
                                              UIElement.GotFocusEvent,
                                              new RoutedEventHandler(TextBox_GotFocus));

            var    context = GetDispatcherContext();
            var    runner  = new Runner(context);
            Window window  = new MainWindow();

            window.Show();
            var tradeManager          = new TradeManager();
            var getNameViewModel      = new GetNameViewModel();
            var addMarketViewModel    = new AddMarketViewModel();
            var tradeDetailsViewModel = new TradeDetailsViewModel(runner, getNameViewModel, addMarketViewModel);
            var plot          = new TradePlot();
            var mainViewModel = new MainWindowViewModel(runner, tradeManager, tradeDetailsViewModel, plot);

            window.DataContext = mainViewModel;
        }
Пример #25
0
        public TradeDetailsViewModel GetTradeDetailsList(int pageNo, int pageSize, long tradeId, long levelId)
        {
            int totalItem = 0;
            List <TradeDetails> tradeDetailsList = new List <TradeDetails>();
            List <Trade>        tradeList        = new List <Trade>();

            if (tradeId > 0 && levelId > 0)
            {
                tradeDetailsList = _genericTradeDetailsRepo.Get(m => m.TradeId == tradeId && m.LevelId == levelId, o => o.OrderBy(m => m.Id), "Level", pageSize * pageNo, pageSize).ToList();
                totalItem        = _genericTradeDetailsRepo.Get(m => m.TradeId == tradeId && m.LevelId == levelId).Count();
            }
            else if (tradeId > 0)
            {
                tradeDetailsList = _genericTradeDetailsRepo.Get(m => m.TradeId == tradeId, o => o.OrderBy(m => m.Id), "Level", pageSize * pageNo, pageSize).ToList();
                totalItem        = _genericTradeDetailsRepo.Get(m => m.TradeId == tradeId).Count();
            }
            else if (levelId > 0)
            {
                tradeDetailsList = _genericTradeDetailsRepo.Get(m => m.LevelId == levelId, o => o.OrderBy(m => m.Id), "Level", pageSize * pageNo, pageSize).ToList();
                totalItem        = _genericTradeDetailsRepo.Get(m => m.LevelId == levelId).Count();
            }
            else
            {
                tradeDetailsList = _genericTradeDetailsRepo.Get(null, o => o.OrderBy(m => m.Id), "Level", pageSize * pageNo, pageSize).ToList();
                totalItem        = _genericTradeDetailsRepo.GetCount();
            }
            tradeList = _genericTradeRepo.Get().ToList();
            TradeDetailsViewModel viewModel = new TradeDetailsViewModel()
            {
                TradeDetailsList = tradeDetailsList,
                TotalItem        = totalItem,
                TotalPageNo      = (int)Math.Ceiling((double)totalItem / pageSize)
            };

            return(viewModel);
        }