Example #1
0
        public void testCompleteExp()
        {
            setup("log(5+6*7/8)");

            ExpressionContext context = parser.expression();

            SpreadsheetVisitor visitor = new SpreadsheetVisitor();
            double             result  = visitor.Visit(context);

            Assert.Equal("1.01072386539177", result.ToString(System.Globalization.CultureInfo.GetCultureInfo("en-US").NumberFormat));
        }
Example #2
0
        public void testVisitPowerExp()
        {
            setup("4^3^2");

            PowerExpContext context = parser.expression() as PowerExpContext;

            SpreadsheetVisitor visitor = new SpreadsheetVisitor();
            double             result  = visitor.VisitPowerExp(context);

            Assert.Equal(double.Parse("262144"), result);
        }
Example #3
0
        public void testVisitFunctionExp()
        {
            setup("log(100)");

            FunctionExpContext context = parser.expression() as FunctionExpContext;

            SpreadsheetVisitor visitor = new SpreadsheetVisitor();
            double             result  = visitor.VisitFunctionExp(context);

            Assert.Equal(result, double.Parse("2"));
        }
Example #4
0
        static void Main(string[] args)
        {
            string input = "log(10 + A1 * 35 + (5.4 - 7.4))";

            AntlrInputStream  inputStream       = new AntlrInputStream(input);
            SpreadsheetLexer  spreadsheetLexer  = new SpreadsheetLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(spreadsheetLexer);
            SpreadsheetParser spreadsheetParser = new SpreadsheetParser(commonTokenStream);

            SpreadsheetParser.ExpressionContext expressionContext = spreadsheetParser.expression();
            SpreadsheetVisitor visitor = new SpreadsheetVisitor();

            Console.WriteLine(visitor.Visit(expressionContext));
        }
Example #5
0
        public void testWrongVisitFunctionExp()
        {
            setup("logga(100)");

            FunctionExpContext context = parser.expression() as FunctionExpContext;

            SpreadsheetVisitor visitor = new SpreadsheetVisitor();
            double             result  = visitor.VisitFunctionExp(context);

            CommonTokenStream ts = (CommonTokenStream)parser.InputStream;

            // this is syntactically correct and would be true even for a good function
            Assert.Equal(SpreadsheetLexer.NAME, ts.Get(0).Type);
            Assert.Equal(null, errorListener.Symbol);
            // we choose to return 0 if we can't the find function with that NAME
            // so that's how we know is wrong
            Assert.Equal(0, result);
        }