示例#1
0
        public void ParseXml_attrCharCaseAndCommaDecSeparator_correctAttributes()
        {
            InstrumBLMock instrumBL    = new InstrumBLMock();
            TradesLoader  importTrades = new TradesLoader(instrumBL, null);

            IEnumerable <Trade> trades;
            XmlDocument         xd = new XmlDocument();

            xd.LoadXml("<Trades><Trade TiMe=\"01.02.2010 10:20:30\" TIckeR=\"ticker1\" pRice=\"100,00\" lotS=\"10\" bS=\"buy\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.NotEmpty(trades);
            Trade trade = trades.ElementAt(0);

            Assert.Equal(new DateTime(2010, 2, 1, 10, 20, 30), trade.Time);
            Assert.Equal(100.00m, trade.Price);
            Assert.Equal(10, trade.LotCount);
            Assert.Equal(BuySell.Buy, trade.BuySell);
            Assert.Equal(1, trade.InsID);
        }
示例#2
0
        public void LoadTrades(List <string> args)
        {
            if (args.Count < 2)
            {
                _console.WriteError("Неверное число аргументов");
                return;
            }

            int accountID;

            if (!int.TryParse(args[0].Trim(), out accountID))
            {
                _console.WriteError("Неверно указан id счета");
                return;
            }

            if (!File.Exists(args[1]))
            {
                _console.WriteError("Файл не существует: " + args[1]);
                return;
            }

            var loader = new TradesLoader(_instrumBL, _accountDA);

            try
            {
                string log     = loader.Load(accountID, args[1]);
                string logfile = args[1] + ".log";
                File.WriteAllText(logfile, log);
                _console.WriteLine("Сформирован log-файл: " + logfile);
            }
            catch (Exception ex)
            {
                _console.WriteError(ex.ToString());
            }
        }
示例#3
0
        public void ParseXml_incorrectXml_emptyTradeList()
        {
            InstrumBLMock instrumBL    = new InstrumBLMock();
            TradesLoader  importTrades = new TradesLoader(instrumBL, null);

            IEnumerable <Trade> trades;

            // null argument
            Assert.Throws <ArgumentNullException>(() => { importTrades.ParseXml(null); });

            // empty xml
            XmlDocument xd = new XmlDocument();

            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // incorrect root element
            xd.LoadXml("<aaa />");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // empty trade list
            xd.LoadXml("<Trades />");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // no trade node
            xd.LoadXml("<Trades><aaa /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // empty trade node
            xd.LoadXml("<Trades><Trade /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);
        }
示例#4
0
        public void ParseXml_incorrectTradeNode_emptyTradeList()
        {
            InstrumBLMock instrumBL    = new InstrumBLMock();
            TradesLoader  importTrades = new TradesLoader(instrumBL, null);

            IEnumerable <Trade> trades;
            XmlDocument         xd = new XmlDocument();

            // не все атрибуты есть
            xd.LoadXml("<Trades><Trade /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // Time есть, но он пустой
            xd.LoadXml("<Trades><Trade Time=\"\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // Time неверного формата
            xd.LoadXml("<Trades><Trade Time=\"qqqwwweee\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // Time неверного формата
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:90\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // Нет тикера
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // пустой тикер
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // неверный тикер
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"hello\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // нет цены
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // неверная цена
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // неверная цена
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"qqq.www\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // нет lots
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"100.00\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // пустой lots
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"100.00\" Lots=\"\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // неверный lots
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"100.00\" Lots=\"qqq\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // дробный lots
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"100.00\" Lots=\"10.15\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // нет bs
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"100.00\" Lots=\"10\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // пустой bs
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"100.00\" Lots=\"10\" BS=\"\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // неверный bs
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"100.00\" Lots=\"10\" BS=\"hello\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.Empty(trades);

            // все верно
            xd.LoadXml("<Trades><Trade Time=\"01.02.2010 10:20:30\" Ticker=\"ticker1\" Price=\"100.00\" Lots=\"10\" BS=\"buy\" /></Trades>");
            trades = importTrades.ParseXml(xd);
            Assert.NotEmpty(trades);
            Trade trade = trades.ElementAt(0);

            Assert.Equal(new DateTime(2010, 2, 1, 10, 20, 30), trade.Time);
            Assert.Equal(100.00m, trade.Price);
            Assert.Equal(10, trade.LotCount);
            Assert.Equal(BuySell.Buy, trade.BuySell);
            Assert.Equal(1, trade.InsID);
        }