public void GivenTokenQueueFactory_WhenNumberBeforeCurrency_ThenCurrencyAmount()
        {
            var lexer             = CreateLexer("10EUR");
            var tokenQueueFactory = new TokenQueueFactory();
            var queue             = tokenQueueFactory.Create(lexer);

            var token = queue.Dequeue();

            Assert.AreEqual(TokenType.CurrencyAmount, token.Type);
        }
        public ExpressionExtractorTests()
        {
            var currencyService = new TestCurrencyService();

            var tokenQueueFactory   = new TokenQueueFactory();
            var coinMarketCapClient = new TestCoinMarketCapClient();
            var fixerClient         = new TestFixerClient();
            var currencyConverter   = new CurrencyConverter(coinMarketCapClient, fixerClient);
            var tokenConverter      = new TokenConverter(currencyConverter, currencyService, coinMarketCapClient, fixerClient);
            var interpreterFactory  = new InterpreterFactory(tokenConverter, currencyService, tokenQueueFactory);

            this.expressionExtractor = new ExpressionExtractor(interpreterFactory);
        }
Пример #3
0
        private Interpreter CreateInterpreter(string text)
        {
            var connectionStringFactory = new TestConnectionStringFactory();
            var currencyService         = new CurrencyService(connectionStringFactory);
            var lexer             = new Lexer(text, currencyService);
            var tokenQueueFactory = new TokenQueueFactory();
            var parser            = new Parser(lexer, tokenQueueFactory);

            var coinMarketCapClient          = new CoinMarketCapClient();
            var fixerClient                  = new FixerClient();
            var currencyConverter            = new CurrencyConverter(coinMarketCapClient, fixerClient);
            var currencyAmountTokenConverter = new TokenConverter(currencyConverter, currencyService, coinMarketCapClient, fixerClient);

            return(new Interpreter(parser, currencyAmountTokenConverter));
        }
        public void GivenTokenQueueFactory_WhenMultipleMerge_ThenSuccess()
        {
            var lexer             = CreateLexer("€1 < 1BTC");
            var tokenQueueFactory = new TokenQueueFactory();
            var queue             = tokenQueueFactory.Create(lexer);

            var token = queue.Dequeue();

            Assert.AreEqual(TokenType.CurrencyAmount, token.Type);

            token = queue.Dequeue();
            Assert.AreEqual(TokenType.SmallerThan, token.Type);

            token = queue.Dequeue();
            Assert.AreEqual(TokenType.CurrencyAmount, token.Type);
        }
        public void GivenTokenQueueFactory_WhenDequeue_ThenCorrectOrder()
        {
            var lexer             = CreateLexer(@"1 > ""2""");
            var tokenQueueFactory = new TokenQueueFactory();
            var queue             = tokenQueueFactory.Create(lexer);

            var token = queue.Dequeue();

            Assert.AreEqual(TokenType.Number, token.Type);

            token = queue.Dequeue();
            Assert.AreEqual(TokenType.LargerThan, token.Type);

            token = queue.Dequeue();
            Assert.AreEqual(TokenType.String, token.Type);
        }
Пример #6
0
        public UnitTest1()
        {
            var settings = new TestBotSettings();
            var connectionStringFactory = new TestConnectionStringFactory();
            var coinmarkcapClient       = new CoinMarketCapClientCachingDecorator(new CoinMarketCapClient());
            var fixerClient             = new FixerClientCachingDecorator(new FixerClient());
            var currencyConverter       = new CurrencyConverter(coinmarkcapClient, fixerClient);
            var redditClientFactory     = new RedditClientFactory();

            this.currencyService      = new CurrencyService(connectionStringFactory);
            this.remindRequestService = new RemindRequestService(connectionStringFactory);
            var tokenConverter      = new TokenConverter(currencyConverter, currencyService, coinmarkcapClient, fixerClient);
            var tokenQueueFactory   = new TokenQueueFactory();
            var interpreterFactory  = new InterpreterFactory(tokenConverter, currencyService, tokenQueueFactory);
            var expressionExtractor = new ExpressionExtractor(interpreterFactory);

            this.unreadMessageReader  = new RedditUnreadMessagesReader(settings, remindRequestService, expressionExtractor, redditClientFactory);
            this.remindRequestHandler = new RemindRequestHandler(settings, remindRequestService, interpreterFactory, redditClientFactory);
        }