示例#1
0
        public void Scan_NotInRangeFollowedByLiteral_LiteralIsIgnored()
        {
            var token = RangeToken.Scan("[!a-c]de");

            Assert.NotNull(token);
            Assert.Equal("[!a-c]", token.Value);
        }
示例#2
0
        ResolveRange(RangeToken r)
        {
            string key = _spreadSheet.ConvertAddress(_baseCell.Address, r.Value);

            if (_cells.ContainsKey(key))
            {
                return(new VariableToken(_cells[key].Variable));
            }
            object range = _spreadSheet.GetCellValue(_baseCell.Address, key);

            if (range.GetType().IsArray)
            {
                throw new ArgumentException();
            }
            if (range.GetType() == typeof(bool))
            {
                return(new BooleanToken((bool)range));
            }
            else if (range.GetType() == typeof(string))
            {
                return(new StringToken((string)range));
            }
            else if (range.GetType() == typeof(double))
            {
                return(new NumberToken((double)range));
            }
            else
            {
                throw new ArgumentException();
            }
        }
示例#3
0
        public void SetStateTokenizeRange()
        {
            var lexer    = new Lexer();
            var tokens   = lexer.Tokenize("[a-");
            var expected = new RangeToken();

            Assert.AreEqual(tokens.Last(), expected);
        }
示例#4
0
 ResolveRange(RangeToken r)
 {
     if (_dependencies != null)
     {
         _dependencies.Add(r);
         return(new NullToken());
     }
     return(_baseCell.Worksheet[r.Value]);
 }
示例#5
0
        public void Scan_RangeWithExclamationMark_RangeToken()
        {
            var token = RangeToken.Scan("[!a-c]");

            Assert.NotNull(token);
            Assert.Equal(RangeType.NotInRange, token.Type);
            Assert.Equal('a', token.LowerBound);
            Assert.Equal('c', token.UpperBound);
            Assert.Equal("[!a-c]", token.Value);
        }
示例#6
0
        public void Scan_Range_RangeToken()
        {
            var token = RangeToken.Scan("[a-c]");

            Assert.NotNull(token);
            Assert.Equal(RangeType.InRange, token.Type);
            Assert.Equal('a', token.LowerBound);
            Assert.Equal('c', token.UpperBound);
            Assert.Equal("[a-c]", token.Value);
        }
示例#7
0
 public void Scan_MissingOpeningBrace_Null()
 {
     Assert.Null(RangeToken.Scan("ab-c]"));
 }
示例#8
0
 public void Scan_IncompleteRange_Exception(string s)
 {
     Assert.Throws <OscLexerException>(() => RangeToken.Scan(s));
 }
示例#9
0
 public RangeSyntax(RangeToken token)
     : base(token)
 {
 }